Объект контроллера
Объект контроллера действует как координатор или как посредник между одним или более объектами представления и одним или более объектами модели. В шаблоне разработки Контроллера представления Модели объект контроллера (или, просто, контроллер) интерпретирует пользовательские действия, и намерения, сделанные в поле зрения, возражает — такой как тогда, когда пользователь касается или нажимает кнопку или вводит текст в текстовом поле — и передает новые или измененные данные к объектам модели. Когда объекты модели изменяются — например, пользователь открывает документ, хранивший в файловой системе — она передает это новые данные модели к объектам представления так, чтобы они могли вывести на экран ее. Контроллеры являются таким образом кабелепроводом, через который объекты представления узнают об изменениях в объектах модели и наоборот. Объекты контроллера могут также установить и скоординировать задачи для приложения и управлять жизненными циклами других объектов. Платформы Какао предлагают три типа основного контроллера: координирование контроллеров, контроллеров представления (на iOS) и посреднических контроллеров (на OS X).
Координирование контроллеров
Координирующие контроллеры наблюдают и управляют функционированием целого приложения или частью одной. Они часто - места, где специализированная логика введена в приложение. Контроллер координирования выполняет множество функций, включая:
Ответ на сообщения делегации и наблюдение уведомлений
Ответ на сообщения действия (которые являются, отправляются средствами управления, такими как кнопки, когда пользователи касаются или щелкают по ним),
Устанавливая соединения между объектами и выполнением других задач установки, такой как тогда, когда запускается приложение
Управление жизненным циклом «находящихся в собственности» объектов
Контроллер координирования часто является экземпляром пользовательского подкласса NSObject
. В OS X, если приложение Какао использует в своих интересах архитектуру документа, контроллер координирования часто NSWindowController
или NSDocumentController
объект. В приложениях для iOS контроллеры представления часто включают в категорию роль координирования контроллера.
Контроллеры представления
UIKit и платформы AppKit и обеспечивают классы контроллера представления (для iOS и OS X, соответственно), но эти классы имеют различные характеристики. В AppKit контроллер представления является экземпляром пользовательского подкласса NSViewController
класс. Контроллеру представления принадлежит представление, заархивированное в файле пера, и то представление представляет объект данных. Контроллер представления управляет соединениями и обновлениями к подпредставлениям его представления.
В UIKit контроллер представления управляет представлением, выводящим на экран экранное из содержания; это сохраняет ссылку на это представление и может создать или загрузить его из файла пера. Контроллер управляет представлением этого представления и перехода к любому последующему представлению в приложении. (В большинстве случаев следующее представление задвигает от права.) Панелью навигации и панелью вкладок и всем их связанным поведением представления, управляют и реализуют объекты контроллера представления. Когда ориентация изменяется, контроллеры представления могут также вывести на экран модальные представления, реагировать на предупреждения низкой памяти и повернуть представления.
Контроллер представления в iOS является экземпляром подкласса UIViewController
. UIKit обеспечивает несколько подклассов специального назначения UIViewController
, такой как UITableViewController
. Необходимо расшириться, классы контроллера представления платформы для имения контроллера добиваются данных между моделями и представлениями. Контроллеры представления обычно являются делегатом или объектами источника данных для многих типов объектов платформы.
Посредничество контроллеров (OS X)
Посреднический контроллер упрощает поток данных между объектами представления и объектами модели. Когда пользователи изменяют значение, выведенное на экран в объекте представления, посреднический контроллер автоматически передает новое значение к объекту модели для хранения; и когда свойство модели изменяет свое значение, посреднический контроллер гарантирует что надлежащие отображения объекта представления измененное значение. В отличие от других типов объектов контроллера, они являются очень допускающими повторное использование. По этим и другим причинам посреднические контроллеры являются центральным компонентом технологии привязки Какао. Вы перетаскиваете посреднический контроллер из библиотеки Interface Builder и затем конфигурируете эти объекты установить привязку между контроллером и его объектами представления и его объектами модели. Посреднический контроллер обычно является экземпляром конкретного подкласса краткого обзора NSController
класс.