В общем, делегаты могут рассматриваться как обработчики событий.Соответственно, 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.
Я понимаю, что долго, но надеюсь, это поможет.