Использование Interface Builder для UITableViews - PullRequest
9 голосов
/ 25 сентября 2008

Я очень рано в процессе обучения разработке iPhone. Я пытаюсь разобраться с различными предметами. Сейчас я просто взял базовый шаблон NavigationController и пытаюсь создать простое сгруппированное табличное представление с парой текстовых полей. То, что я не могу сделать, это заставить Интерфейсный Разработчик позволить мне поместить UITableViewCell в UITableView, чтобы я мог добавить текстовое поле в Ячейку. Возможно ли это вообще (может показаться, что UITableViewCell является перетаскиваемым элементом управления)?

Если нет, значит ли это, что весь этот код мне нужно будет написать самому?

Ответы [ 4 ]

17 голосов
/ 25 сентября 2008

Вы можете создать ячейку с помощью Interface Builder, но вы должны сделать ее объектом верхнего уровня, а не дочерним элементом табличного представления. Затем вы можете вернуть эту ячейку в функции tableView вашего контроллера: cellForRowAtIndexPath: function.

Обязательно предоставьте ячейке идентификатор в Интерфейсном Разработчике и затем используйте тот же идентификатор с dequeueReusableCellWithIdentifier: (см. Пример кода, как это работает - идея в том, ячейки используются повторно - ОС будет выделять только столько ячеек, сколько помещается на экране одновременно. Умный способ сэкономить память.)

6 голосов
/ 26 сентября 2008

Будьте осторожны с методом Boot To The Head. Вы утечете, если не справитесь со своим IBOutlets. Я постараюсь объяснить это в меру своих возможностей, не публикуя код (NDA). Если вы планируете использовать IB для создания своей ячейки, создайте UITableViewCell собственный Xib-файл. Установите владельца файла в качестве подкласса UIViewController (или UITableController). Назовите IBOutlet что-то вроде UITableViewCell *cellFactory. В методе UITableViewDataSource tableView:cellForRowAtIndexPath: выполните следующий псевдокод;

  1. Попробуйте удалить из очереди ячейку, используя идентификатор, который вы установили в IB
  2. В случае успеха, вы сделали. Просто используйте ячейку
  3. В противном случае вам нужно создать новую ячейку. Используйте метод [NSBundle mainBundle] loadNibNamed:owner:options: с вашим правильным файлом xib там. Это заполнит cellFactory ivar свежей клеткой. Здесь начинается сложная часть.
  4. установите cell = cellFactory, затем отпустите cellFactory и установите его на ноль, чтобы быть уверенным, что вы случайно его не используете снова. Теперь вы можете безопасно пользоваться своей клеткой
1 голос
/ 02 марта 2009

Это хороший учебник по использованию построителя пользовательского интерфейса для UITableView

1 голос
/ 25 сентября 2008

К сожалению, это на самом деле не работает - ячейки в табличном представлении генерируются делегатом во время выполнения. Это, однако, очень простой код. Посмотрите пример кода tableview, за ним довольно легко следовать.

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