Для чего используется метод `loadView` в UIKit?

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

Ответ

Метод loadView() контроллера представления (UIViewController) отвечает за создание и присвоение его корневого view. Это точка для полностью кастомной программной инициализации view-иерархии, в обход Storyboard или XIB-файлов.

Основные сценарии использования:

  1. Программный UI – Когда интерфейс строится исключительно кодом, без Interface Builder.
  2. Специализированные view – Для использования кастомных подклассов UIView, которые сложно или невозможно создать в Storyboard.
  3. Оптимизация – Ленивая или условная загрузка сложных view-иерархий.

Пример реализации:

override func loadView() {
    // 1. Не вызываем super.loadView(), так как создаем view с нуля.
    // 2. Создаем и настраиваем корневое view.
    let rootView = UIView()
    rootView.backgroundColor = .systemBackground

    let titleLabel = UILabel()
    titleLabel.text = "Программно созданный View"
    titleLabel.translatesAutoresizingMaskIntoConstraints = false
    rootView.addSubview(titleLabel)

    // 3. Настраиваем layout.
    NSLayoutConstraint.activate([
        titleLabel.centerXAnchor.constraint(equalTo: rootView.centerXAnchor),
        titleLabel.centerYAnchor.constraint(equalTo: rootView.centerYAnchor)
    ])

    // 4. КРИТИЧЕСКИ ВАЖНО: присвоить self.view.
    self.view = rootView
}

Важно: Если вы переопределяете loadView(), вы берете на себя полную ответственность за создание view. Для обычной пост-инициализации (настройка уже загруженного view) используйте viewDidLoad().