Этот вопрос проверяет понимание ключевого компонента архитектуры iOS приложений — rootViewController, который управляет иерархией представлений на экране.
В iOS-приложениях, построенных на фреймворке UIKit, объект UIWindow служит контейнером для всех видимых элементов интерфейса. Свойство rootViewController этого окна является ссылкой на главный UIViewController, чьё представление (view) будет загружено и размещено в качестве корневого в иерархии окна. Это фундаментальный механизм управления тем, что пользователь видит на экране.
При запуске приложения система создает главное окно. Разработчик должен установить его rootViewController, чтобы определить начальный экран. После установки система автоматически добавляет view контроллера в окно и управляет его жизненным циклом (например, вызывает методы viewDidLoad, viewWillAppear).
Чаще всего rootViewController используется для:
MainViewController или UINavigationController).Вот как это выглядит в методе application(_:didFinishLaunchingWithOptions:) делегата приложения:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// 1. Создаем главное окно
window = UIWindow(frame: UIScreen.main.bounds)
// 2. Создаем начальный контроллер (например, навигационный)
let initialViewController = UINavigationController(rootViewController: MainViewController())
// 3. Назначаем его rootViewController окна
window?.rootViewController = initialViewController
// 4. Делаем окно ключевым и видимым
window?.makeKeyAndVisible()
return true
}Для смены потока (например, после логина) можно просто переназначить rootViewController:
// Где-то после успешной авторизации
let mainAppViewController = TabBarController()
UIApplication.shared.windows.first?.rootViewController = mainAppViewController
// Опционально: анимация перехода
UIView.transition(with: window, duration: 0.3, options: .transitionCrossDissolve, animations: {}, completion: nil)Вывод: rootViewController — это центральная точка управления видимым содержимым окна в iOS. Его понимание критически важно для навигации между крупными разделами приложения и корректной инициализации пользовательского интерфейса.