Как подключить IBOutlet из UITableViewController непосредственно к пользовательской ячейке? - PullRequest
6 голосов
/ 03 ноября 2011

Несколько дней назад я смотрел видеоурок, в котором объясняется, как использовать пользовательские ячейки в UITableViewController. Я узнал, что могу подготовить пользовательскую ячейку прямо в конструкторе интерфейсов, поэтому я сделал следующее:

Я создал UITableViewController и подключил пользовательский класс, который состоит из IBOutlet (UILabel). После этого я включил свою раскадровку и подготовил собственную ячейку с помощью UILabel. Наконец, я подключаю метку из UITableViewController непосредственно к своей пользовательской ячейке.

Происходит следующее:

Couldn't compile connection: <IBCocoaTouchOutletConnection:0x400724860  <IBProxyObject: 0x4007872c0> => productLabel => <IBUIImageView: 0x401080220>>

Разве нельзя подключить это напрямую? В обучающем видео Секции WWDC 2011 (Сессия # 309) они делают именно то, что я сделал. Но есть ловушка: они не показывают код позади, они просто подключают его, как я объяснил выше.

Для лучшего понимания я добавляю скриншот, который показывает, что я подключаю: enter image description here

Ответы [ 2 ]

4 голосов
/ 12 февраля 2012

У меня была такая же проблема в этом вопросе . Как ответил на мой вопрос, проблема в том, что клетка здесь является прототипом клетки. Соединение между элементом ячейки и UITableViewController прекрасно работает для табличного представления со статическими ячейками, поскольку они создаются при запуске, но для ячеек-прототипов это не имеет смысла, поскольку многие из них, вероятно, будут созданы ... и они этого не делают существует, пока не будет вызван cellForRowAtIndexPath. (Это действительно плохое сообщение об ошибке, и Xcode, вероятно, не должен позволять вам устанавливать недопустимое соединение, подобное этому.)

3 голосов
/ 03 ноября 2011

На самом деле,

Я видел видео, и они не связывают вас так, как вы предлагаете. Они соединяются от клетки к UILabel в камере. Другими словами, они имеют подкласс UITableViewCell и соединяют эти IBOutlets в пользовательском объекте. В его базовой форме вы можете создать собственный класс ячейки и просто объявить интерфейс и синтезировать свойства, и вам будет хорошо. Просто убедитесь, что вы правильно установили свой идентификатор и пользовательский класс в раскадровке.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...