Когда вызывается метод viewWillAppear у UIViewController?

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

Ответ

Метод viewWillAppear(_:) вызывается у UIViewController непосредственно перед тем, как его view будет добавлено в иерархию окон и станет видимым пользователю.

Конкретные сценарии вызова:

  1. Первое отображение контроллера (после viewDidLoad и viewWillLayoutSubviews).
  2. Возврат на экран после того, как контроллер был скрыт другим контроллером (например, закрытие модального окна или pop в навигационном стеке).
  3. Смена ориентации устройства (только если контроллер остается активным и видимым).
  4. Восстановление из многозадачности (например, после переключения между приложениями).

Типичное использование:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated) // Важно всегда вызывать super!

    // Обновление данных перед показом
    tableView.reloadData()

    // Настройка навигационной панели
    navigationController?.setNavigationBarHidden(false, animated: animated)

    // Запуск/возобновление анимаций
    startIndicatorAnimation()
}

Отличия от других методов жизненного цикла:

  • viewDidLoad – вызывается один раз после загрузки view в память.
  • viewWillAppear – может вызываться многократно перед каждым появлением view на экране.
  • viewDidAppear – вызывается после того, как view появилось и отрисовалось.

Важно: Не выполняйте в viewWillAppear тяжелые синхронные операции, так как это задержит появление интерфейса.