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





К сожалению, на самом деле это не так - ячейки в табличном представлении генерируются делегатом во время выполнения. Однако это оказывается очень простым кодом. Посмотрите пример кода tableview, его довольно легко понять.
Вы можете создать ячейку с помощью Interface Builder, но вы должны сделать ее объектом верхнего уровня, а не дочерним элементом табличного представления. Затем вы можете вернуть эту ячейку в функцию tableView: cellForRowAtIndexPath: вашего контроллера представления.
Обязательно дайте ячейке идентификатор в Interface Builder, а затем используйте тот же идентификатор с dequeueReusableCellWithIdentifier: (см. Пример кода, чтобы узнать, как это работает - идея состоит в том, что ячейки используются повторно - ОС будет выделять столько ячеек, сколько подходит сразу на экране. Умный способ сэкономить память.)
Будьте осторожны с методом Boot To The Head. У вас будет утечка, если вы не разобрались с IBOutlets должным образом. Я постараюсь объяснить это как можно лучше, не публикуя код (NDA). Если вы планируете использовать IB для создания своей ячейки, сделайте UITableViewCell собственным файлом Xib. Установите владельца файла в качестве подкласса UIViewController (или UITableController). Назовите IBOutlet, например, UITableViewCell *cellFactory. В методе UITableViewDataSourcetableView:cellForRowAtIndexPath: выполняет следующий псевдокод;
[NSBundle mainBundle] loadNibNamed:owner:options: с вашим правильным файлом xib. Это заполнит ячейку Factory ivar свежей ячейкой. А вот и сложная часть.cell = cellFactory, затем отпустите cellFactory и установите значение nil, чтобы случайно не использовать его снова. Теперь вы можете безопасно использовать свой мобильный телефон как обычноЭто хорошее руководство по использованию Конструктор пользовательского интерфейса для UITableView's