Ответ
rootViewController — это корневой view controller, чья view иерархия загружается в UIWindow и становится основным содержимым приложения. Это отправная точка для всего пользовательского интерфейса.
Назначение и особенности:
- Устанавливается один раз при запуске приложения (в
AppDelegateилиSceneDelegate). - Определяет начальный экран, который видит пользователь.
- При смене
rootViewControllerстарое view и его иерархия полностью удаляются из окна, а новое — добавляется. - Частая практика — динамическая смена для перехода между логически разными частями приложения (например, экран входа → основной интерфейс).
Пример установки:
// Обычно в SceneDelegate.scene(_:willConnectTo:options:)
guard let windowScene = scene as? UIWindowScene else { return }
let window = UIWindow(windowScene: windowScene)
// Создаём навигационный контроллер как корневой
window.rootViewController = UINavigationController(rootViewController: MainViewController())
self.window = window
window.makeKeyAndVisible()
Важно: Не путать с keyWindow. rootViewController отвечает за контент окна, а keyWindow — за то, какое окно получает ввод с клавиатуры и не связанные с touches события.