Использование Interface Builder для UITableViews

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
9
0
23 033
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

Ответ принят как подходящий

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

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

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

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

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

Другие вопросы по теме