Подтвердить что ты не робот

Путаница в отношении статических ячеек и динамических ячеек

Я пытаюсь выяснить, как добавить несколько статических ячеек в дополнение к динамическим ячейкам (я думаю), но когда я запустил новое приложение "Мастер-детали" и переключил стандартные динамические прототипы по умолчанию на статические ячейки, он сработает.

Я думаю, поскольку я все еще новичок в этом, я не понимаю, как все компоненты (представления таблицы, ячейки, делегаты) подключены. После того, как я переключился на Static Cells, я сделал три ячейки, но они не появились. Приложение просто падает.

Я могу включить код, но в основном, я создаю новую Master-Detail, переключаюсь на Static Cells, меняю имя трех ячеек и сбой (в основном цикле).

Спасибо за все.

4b9b3361

Ответ 1

Если я понимаю ваш вопрос, это объяснение, которое вы ищете:

Прототип (повторное использование):

Когда вы используете Динамические ячейки, вы используете Ячейки Prototype. Это означает, что в IB или в вашем коде вы создаете экземпляр UITableViewCell и указываете ему идентификатор (reuseIdentifier). UITableView использует этот прототип для создания как можно большего количества ячеек (строк). UITableView создать (и использовать память) столько же ячеек, сколько необходимо для заполнения экрана. Когда некоторые из этих ячеек покидают экран, UITableView повторно использует их - перерабатывает их.

Вы можете определить более чем один прототип ячейки в UITableView. Идея заключается в том, что каждый прототип служит другой цели. Например, вы определяете ячейку прототипа, которая имеет только одну большую UILabel, и ее цель - использовать статический текст. Вы определяете другой прототип, который имеет только один UIImageView. Это зависит от вашего дизайна и того, как вы хотите отображать свои данные.

Чтобы использовать ячейки прототипа в IB, вы используете Ячейки динамических прототипов и задайте identifier. Затем вам нужно реализовать методы UITableViewDataSource, такие как:

– tableView:numberOfRowsInSection: 
– tableView:cellForRowAtIndexPath:

Эти методы являются методами делегатов UITableView.

Если вы не используете IB, вы создадите ячейки в методе – tableView:cellForRowAtIndexPath::

UITableViewCell * cell = [[UITableViewCell alloc] initWithStyle: (UITableViewCellStyle) style reuseIdentifier: (NSString *) ReuseIdentifier];

Static

Идея статических ячеек - простота. Вы можете использовать прототипные ячейки (например, только один прототип) и загружать статический NSArray, например, в качестве источника данных. Чтобы выполнить задачу внедрения методов UITableViewDataSource, Apple представила статические ячейки, в которых вы использовали бы только раскадровку и IB. В IB вы выбираете представление таблицы и выбираете Статические ячейки, а также вводите текст или устанавливаете изображение. Вы не хотите делать какие-либо динамические изменения для статических ячеек позже, когда приложение запущено, потому что оно не предназначено, и вам придется реализовать еще много методов, которых он не стоит. Хотя это не большая работа, чтобы получить indexPath выбранной строки, но идея в том, что вам нужно нажать новое представление из выбора статической ячейки, вы будете использовать segues вместо того, чтобы внедрять какой-либо код.

При использовании статических ячеек вы не должны внедрять метод UITableViewDataSource, иначе ваше приложение выйдет из строя, и наоборот, если вы не реализуете методы UITableViewDataSource (требуемые) при использовании прототипов, ваше приложение аварийно завершает работу.