iOS. Приемы программирования
Шрифт:
Теперь, если запустить приложение в эмуляторе iPhone, мы увидим результат работы (рис. 4.2).
Рис. 4.2. Обычный табличный вид с тремя разделами
Когда табличный вид перезагружается или обновляется, он запрашивает источник данных через
После того как источник данных укажет количество разделов, табличный вид запросит количество строк, которые должны быть загружены в каждый из разделов. Источник данных получает индекс с нулевой базой для каждого раздела и на базе этого индекса решает, сколько ячеек загрузить в каждый раздел.
Табличный вид, определив количество ячеек в разделах, продолжит запрашивать источник данных о видах — один такой вид соответствует каждой ячейке того или иного раздела. Вы можете выделять экземпляры класса
4.2. Использование дополнительных элементов в ячейке табличного вида
Постановка задачи
Требуется привлечь внимание пользователя, отображая в таблице дополнительные элементы, и предложить альтернативные способы взаимодействия с каждой ячейкой в табличном виде.
Решение
Используйте свойство accessoryType класса UITableViewCell. Экземпляры этого класса вы предоставляете табличному виду в объекте его источника данных:
Обсуждение
Можно
присваивать любые значения, определенные в перечне UITableViewCellAccessoryType, свойству accessoryType экземпляра класса UITableViewCell. Среди полезных дополнительных элементов следует особо отметить индикатор подробного описания и кнопку детализации [1] . Оба этих элемента содержат угловую скобку, подсказывающую пользователю, что если прикоснуться пальцем к соответствующей ячейке таблицы, то откроется новый вид или контроллер вида. Проще говоря, пользователь перейдет на новый экран с более подробной информацией об актуальном селекторе. Разница между двумя этими элементами заключается с том, что индикатор подробного описания не инициирует никакого события, а вот кнопка детализации при нажатии запускает событие, направляемое к делегату. Иными словами, эффект от нажатия кнопки не равен эффекту от нажатия самой ячейки. Следовательно, кнопка детализации позволяет пользователю осуществлять два разных, но связанных действия применительно к одной и той же строке.1
Подробнее об этих элементах см.:— Примеч. пер.
На рис. 4.3 показаны два этих дополнительных элемента в табличном виде. В первой строке мы видим индикатор подробного описания, а во второй — кнопку детализации.
Рис. 4.3. Две ячейки табличного вида с различными дополнительными элементами
Если прикоснуться к любой кнопке детализации, присвоенной ячейке табличного вида, то сразу становится очевидно, что это, в сущности, самостоятельная кнопка. А теперь внимание — вопрос! Как табличный вид узнает, что пользователь нажал такую кнопку?
Как объяснялось ранее, табличный вид инициирует события, направляемые его объекту-делегату. Кнопка детализации из табличного вида также запускает событие, которое может быть принято объектом-делегатом табличного вида:
Данный код ищет ячейку табличного вида, в которой была нажата кнопка детализации, и выводит в окне консоли содержимое текстовой метки данной ячейки. Напоминаю: чтобы отобразить окно консоли в Xcode, нужно выполнить команду Run\Console (Запуск\Консоль).
4.3. Создание специальных дополнительных элементов в ячейке табличного вида
Постановка задачи
Дополнительных элементов, предоставляемых в iOS, недостаточно для решения задачи, и вы хотели бы создать собственные дополнительные элементы.
Решение
Присвойте экземпляр класса UIView свойству accessoryView любого экземпляра класса UITableViewCell: