#iphone #objective-c #uitableview
#iPhone #objective-c #uitableview
Вопрос:
Я планирую систему заказа на основе UITableView
для iPad. Я создаю подклассы, UITableViewCell
чтобы показывать разные UILabel
, UIButton
и UITextfield
экземпляры подряд.
Но у меня возник вопрос: как соединить UIButton
и UITextField
экземпляры вместе, чтобы узнать, какие из них принадлежат друг другу?
Самой простой идеей (и, я думаю, худшей ;-)) было бы сохранить все в одном классе, чтобы как-то его поддерживать. Но я хотел бы сохранить несколько классов из-за логического разделения (статьи, корзина покупок, категории …). Но моя проблема в том, как их подключить? Когда я нажимаю кнопку, чтобы добавить новый элемент — как я точно узнаю, что это была статья с номером 234233? Я знаю, что можно было бы работать с tag
— но мне нужно больше элементов в строке, которые нужно пометить… И изменять их…
Я надеюсь, что кто-нибудь сможет помочь =).
Как всегда, промежуточное спасибо!
Комментарии:
1. почему вы не можете указать один и тот же тег для кнопки, текстового поля и метки в ячейке?
2. Я не уверен в этом на 100%, но, насколько я знаю, я могу получить доступ только к одному элементу со специальным тегом? Помимо возможности — действительно ли это было бы отличным решением?
Ответ №1:
Обычно я настраиваю свой подкласс row таким образом, чтобы при настройке того, что должно отображаться (текст, изображения) Я передаю весь объект данных в строку и сохраняю ссылку на него. Затем, когда нажимается кнопка, я использую строку в качестве целевой, и у меня будет вся необходимая информация, доступная прямо там.
После этого я вызываю метод в контроллере, поскольку обычно именно там требуется обработать действие.
В некоторых других случаях я передаю indexPath строке, но позже это вызвало у меня проблемы.
Ответ №2:
для каждого типа можно использовать базовый номер. скажем, indexpath.row для UIButton 1000 indexpath.row для UILabel 2000 indexpath.row для UITextField
используя это, вы можете однозначно идентифицировать все элементы.