Я пытаюсь изучить программирование для iPhone, и я продолжаю видеть эти файлы, и я не уверен, когда каждый файл и содержимое этих файлов упоминаются при выполнении программы, созданной для iPhone. Я пытаюсь следовать учебным пособиям и советам, доступным в Интернете, но нигде нет сравнения по точкам или что-то в этом роде. Было бы здорово, если бы кто-нибудь из вас мог перечислить несколько основных различий, например, когда каждый файл указан и что должно идеально входить в каждый файл и так далее. Спасибо за ваше время.
Какая разница между классами RootViewController, AppDelegate и View Controller, которые я могу создать?
Ответ 1
В общем, делегаты можно рассматривать как обработчики событий. Соответственно, AppDelegate является основным обработчиком событий для всего вашего приложения. Сообщается, когда приложение запустилось, когда оно выйдет, когда приходит уведомление Push, когда приложение перешло в фоновый режим и т.д. Одно из этих событий - applicationDidFinishLaunching - обычно отвечает за создание окна приложения и добавление просмотров к этому окну.
В большинстве приложений представление, добавленное в окно, фактически контролируется UIViewController. Каждый UIViewController отвечает за управление появлением одного основного представления плюс все его подпункты. Например, UITableViewController отвечает за управление UITableView (основной вид) и все UITableViewCells (subview), которые вставляются в этот UITableView. UIViewController обычно выступает в роли делегата (обработчика событий) в представлениях, за которые он отвечает. Когда пользователь удаляет ячейку представления таблицы, вызывается метод в UITableViewController. Когда пользователь перебирает, чтобы удалить отдельный метод, вызывается.
Общий UIViewController предоставляет те же основные функции, но для пользовательских представлений. Например, UIViewController может нести ответственность за отображение нескольких текстовых представлений и кнопки. UIViewController создаст свой основной вид, текстовые представления и представление кнопки. Текстовые представления и представление кнопок будут добавлены в основной вид контроллера представления в виде подзонов. UIViewController зарегистрировался бы как делегат для событий из текстового представления (например, узнав, когда пользователь закончил редактирование текста в текстовом представлении). Он также зарегистрировал бы метод обработки нажатия кнопки, исходящего от кнопки, которой он владел. Когда происходит какое-либо из этих зарегистрированных событий, методы на UIViewController вызываются, позволяя вам выполнять любые действия.
rootViewController - это определенный тип контроллера представлений, используемый с навигационными контроллерами. Если вы хотите, чтобы приложение, имеющее типичную иерархию представления навигации iOS, ваш AppDelegate обычно добавлял в окно приложения UINavigationController. Этот UINavigationController бесполезен без фактического отображения содержимого. Именно здесь запускается rootViewController. Вы несете ответственность за предоставление контроллера вида (например, описанного выше), чтобы действовать как первое представление, хранящееся в стеке представлений UINavigationController. Это представление будет отображаться при запуске приложения и в любое время, когда пользователь выталкивает последующие ViewControllers из стека UINavigationController.
Долгое время я понимаю, но надеюсь, что это поможет.