Использование Interface Builder для UITableViews
Я очень рано изучаю процесс разработки iPhone. Я пытаюсь размахивать кусками. Прямо сейчас я только что взял базовый шаблон NavigationController, и я пытаюсь создать простое сгруппированное представление таблицы с несколькими текстовыми полями. То, что я не могу сделать, это заставить Interface Builder разрешить мне отключить UITableViewCell в UITableView, чтобы затем добавить текстовое поле в ячейку. Возможно ли это (может показаться, что предполагается, что UITableViewCell является перетаскиваемым элементом управления)?
Если нет, значит ли это, что все это код, который мне нужно будет написать?
Ответы
Ответ 1
Вы можете создать ячейку с помощью Interface Builder, но вы должны сделать ее объектом верхнего уровня, а не дочерним элементом представления таблицы. Затем вы можете вернуть эту ячейку в свой контроллер контроллера tableView: cellForRowAtIndexPath:.
Обязательно укажите ячейке идентификатор в интерфейсе Builder, а затем используйте тот же идентификатор с dequeueReusableCellWithIdentifier: (см. пример кода, как это работает - идея это то, что ячейки повторно используются - ОС будет выделять столько ячеек, сколько поместится на экране одновременно. Умный способ сохранить память.)
Ответ 2
Будьте осторожны с методом Boot To The Head. Вы будете утечка, если вы не будете иметь дело с вашим IBOutlets
. Я попытаюсь объяснить это, насколько это возможно, без отправки кода (NDA). Если вы планируете использовать IB для создания своей ячейки, сделайте UITableViewCell
своим собственным Xib файлом. Установите File Owner в качестве подкласса UIViewController
(или UITableController
). Назовите IBOutlet
что-то вроде UITableViewCell *cellFactory
. В методе UITableViewDataSource
tableView:cellForRowAtIndexPath:
выполните следующий псевдокод:
- Попробуйте удалить ячейку, используя идентификатор, который вы установили в IB
- В случае успеха сделайте это. Просто используйте ячейку
- Иначе вам нужно создать новую ячейку. Используйте метод
[NSBundle mainBundle] loadNibNamed:owner:options:
с вашим собственным файлом xib. Это заполнит ячейку cellFactory новой ячейкой. Здесь сложная часть.
- установите
cell = cellFactory
, затем отпустите cellFactory
и установите его на нуль, чтобы убедиться, что вы случайно не используете его снова. Теперь вы можете безопасно использовать свою ячейку как обычно.
Ответ 3
К сожалению, на самом деле это не так: ячейки в представлении таблицы генерируются делегатом во время выполнения. Тем не менее, это очень простой код. Посмотрите примерный пример таблицы, это довольно легко выполнить.
Ответ 4
Это хороший учебник по использованию создатель пользовательского интерфейса для UITableView