Что такое свойство rootViewController у UIWindow?

«Что такое свойство rootViewController у UIWindow?» — вопрос из категории UIKit, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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 события.