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