В чем разница между классами RootViewController, AppDelegate и View Controller, которые я могу создать? - PullRequest
14 голосов
/ 02 сентября 2010

Я пытаюсь изучить программирование для iPhone, и я продолжаю видеть эти файлы, и я не уверен, когда каждый файл и содержимое этих файлов упоминаются при выполнении программы, созданной для iPhone. Я пытаюсь следовать учебным пособиям и советам, доступным в Интернете, но нигде нет точечного сравнения или чего-то подобного. Было бы здорово, если бы кто-нибудь из вас мог перечислить несколько основных отличий, например, когда каждый файл передается и что в идеале должно быть в каждом файле и так далее. Спасибо за ваше время уже.

1 Ответ

53 голосов
/ 03 сентября 2010

В общем, делегаты могут рассматриваться как обработчики событий.Соответственно, AppDelegate является основным обработчиком событий для всего вашего приложения.Сообщается, когда приложение запущено, когда оно выйдет, когда придет Push-уведомление, когда приложение уйдет в фоновый режим и т. Д. Одно из этих событий - applicationDidFinishLaunching - обычно отвечает за создание окна приложения и добавление представлений.в это окно.

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

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

rootViewController - это определенный тип контроллера представления, используемый с контроллерами навигации.Если вы хотите, чтобы приложение имело типичную иерархию представления навигации iOS, ваш AppDelegate обычно добавляет UINavigationController в окно приложения.Этот UINavigationController бесполезен, фактически не имея контента для отображения.Вот где rootViewController вступает в игру.Вы несете ответственность за предоставление контроллера представления (такого как описанный выше), который будет действовать в качестве первого представления, хранящегося в стеке представлений UINavigationController.Это представление будет отображаться, когда приложение запускается и в любое время, когда пользователь выталкивает последующие ViewControllers из стека UINavigationController.

Я понимаю, что долго, но надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...