Прокручиваемый список
Прокручиваемый список: О да! Когда я запрашиваю у делегата конкретную строку, он может вернуть вместо строки целое представление. Туда можно включить значок или графику — словом, я умею отображать все, что только можно втиснуть в представление.
Head First: Потрясающе! Спасибо за беседу.
Соедините каждую характеристику прокручиваемого списка с частью модели, к которой она относится, — делегатом или источником данных. Чтобы узнать, кому принадлежат три метода, вам придется немного покопаться в документации API.
Постойте, а что это за протоколы. У источника данных и у делегата?
Протоколы определяют, на какие сообщения должны отвечать источники данных и делегаты.
У прокручиваемых списков (и других элементов, использующих делегатов и источники данных) определены конкретные сообщения, на которые должны реагировать их вспомогательные классы. Сообщения более подробно рассматриваются в следующей главе, а пока достаточно знать, что сообщения определяются в протоколах. Протоколы являются аналогами абстрактных интерфейсов в Objective-C.
Протоколы определяют методы (сообщения), которые долЖны быть реализованы классомю.
Обычно в протоколе некоторые методы обязательны для реализации, а другие не обязательны. Например, протокол UIPickerViewDatasource содержит обязательный метод с именем pickerView:numberOfRowsInComponent; этот метод необходим для работы источника данных прокручиваемого списка. Однако в протокол UIPickerViewDelegate входит необязательный метод pickerView:titleForRow:forComponent; если он вам не нужен, не включайте его в делегата.
Как определить, какие протоколы важны в каждом конкретном случае? В документации элемента указано, с какими протоколами он должен взаимодействовать. Например, элементу UlPickerView нужен источник данных, с которым он общается через протокол UIPickerViewDataSource, а также делегат, с которым он общается через протокол UIPickerViewDelegate. Щелкните на имени протокола; открывается документация о том, какие сообщения являются обязательными, а какие необязательными. Реализация сообщений будет рассматриваться в следующей главе, а пока мы предоставим вам готовый код.
Прежде всего следует объявить, что контроллер поддерживает оба протокола.
- Дата: 1-12-2014, 17:35