Объект контроллера

Объект контроллера действует как координатор или как посредник между одним или более объектами представления и одним или более объектами модели. В шаблоне разработки Контроллера представления Модели объект контроллера (или, просто, контроллер) интерпретирует пользовательские действия, и намерения, сделанные в поле зрения, возражает — такой как тогда, когда пользователь касается или нажимает кнопку или вводит текст в текстовом поле — и передает новые или измененные данные к объектам модели. Когда объекты модели изменяются — например, пользователь открывает документ, хранивший в файловой системе — она передает это новые данные модели к объектам представления так, чтобы они могли вывести на экран ее. Контроллеры являются таким образом кабелепроводом, через который объекты представления узнают об изменениях в объектах модели и наоборот. Объекты контроллера могут также установить и скоординировать задачи для приложения и управлять жизненными циклами других объектов. Платформы Какао предлагают три типа основного контроллера: координирование контроллеров, контроллеров представления (на iOS) и посреднических контроллеров (на OS X).

Art/controller_object.jpg

Координирование контроллеров

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

  • Ответ на сообщения делегации и наблюдение уведомлений

  • Ответ на сообщения действия (которые являются, отправляются средствами управления, такими как кнопки, когда пользователи касаются или щелкают по ним),

  • Устанавливая соединения между объектами и выполнением других задач установки, такой как тогда, когда запускается приложение

  • Управление жизненным циклом «находящихся в собственности» объектов

Контроллер координирования часто является экземпляром пользовательского подкласса NSObject. В OS X, если приложение Какао использует в своих интересах архитектуру документа, контроллер координирования часто NSWindowController или NSDocumentController объект. В приложениях для iOS контроллеры представления часто включают в категорию роль координирования контроллера.

Контроллеры представления

UIKit и платформы AppKit и обеспечивают классы контроллера представления (для iOS и OS X, соответственно), но эти классы имеют различные характеристики. В AppKit контроллер представления является экземпляром пользовательского подкласса NSViewController класс. Контроллеру представления принадлежит представление, заархивированное в файле пера, и то представление представляет объект данных. Контроллер представления управляет соединениями и обновлениями к подпредставлениям его представления.

В UIKit контроллер представления управляет представлением, выводящим на экран экранное из содержания; это сохраняет ссылку на это представление и может создать или загрузить его из файла пера. Контроллер управляет представлением этого представления и перехода к любому последующему представлению в приложении. (В большинстве случаев следующее представление задвигает от права.) Панелью навигации и панелью вкладок и всем их связанным поведением представления, управляют и реализуют объекты контроллера представления. Когда ориентация изменяется, контроллеры представления могут также вывести на экран модальные представления, реагировать на предупреждения низкой памяти и повернуть представления.

Контроллер представления в iOS является экземпляром подкласса UIViewController. UIKit обеспечивает несколько подклассов специального назначения UIViewController, такой как UITableViewController. Необходимо расшириться, классы контроллера представления платформы для имения контроллера добиваются данных между моделями и представлениями. Контроллеры представления обычно являются делегатом или объектами источника данных для многих типов объектов платформы.

Посредничество контроллеров (OS X)

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