Жизненный цикл контроллера вида (UIViewController) в iOS представляет собой последовательность событий, происходящих от его создания до уничтожения. Основные этапы:
init?(coder aDecoder: NSCoder): Инициализация из Storyboard/Nib.init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?): Инициализация из Nib-файла или программно без Nib.loadView(): Загрузка или создание корневого представления контроллера. Если используется Storyboard/Nib, вызывается автоматически. При программном создании представления нужно переопределить.viewDidLoad(): Вызывается после загрузки представления контроллера в память. Подходит для инициализационных настроек, которые не требуют доступа к geometries (размерам).viewWillAppear(_ animated: Bool): Вызывается непосредственно перед тем, как представление контроллера собирается стать видимым. Подходит для обновления данных, которые могут измениться между появлениями.viewDidAppear(_ animated: Bool): Вызывается после того, как представление контроллера стало видимым. Подходит для запуска анимаций или других задач, которые должны выполняться только после полного отображения.viewWillDisappear(_ animated: Bool): Вызывается непосредственно перед тем, как представление контроллера собирается стать невидимым. Подходит для сохранения состояния или прекращения активностей.viewDidDisappear(_ animated: Bool): Вызывается после того, как представление контроллера стало невидимым. Подходит для освобождения ресурсов или остановки процессов, которые не нужны в фоне.viewWillLayoutSubviews(): Вызывается перед тем, как представления контроллера изменят свои размеры.viewDidLayoutSubviews(): Вызывается после того, как представления контроллера изменили свои размеры. Подходит для окончательной настройки размеров и позиций элементов.traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?): Вызывается при изменении характеристик окружения, таких как размер класса, плотность экрана, светлый/темный режим и т.д.deinit: Вызывается непосредственно перед освобождением объекта контроллера из памяти. Используется для очистки ресурсов, отписки от уведомлений и т.д.Важные моменты:
loadView, viewDidLoad, viewDidAppear, viewWillDisappear, viewDidDisappear, deinit вызываются единожды за жизненный цикл объекта контроллера.viewWillAppear и viewDidAppear могут вызываться несколько раз, например, при навигации вперед и назад.Пример последовательности вызовов при создании и показе контроллера:
swift