Ответ
При переходе назад (pop) в UINavigationController вызываются методы жизненного цикла исчезающего (текущего) контроллера.
Последовательность вызова:
viewWillDisappear(_:)— вызывается перед тем, как представление контроллера будет скрыто с экрана. Здесь можно приостановить анимации или обновление UI.viewDidDisappear(_:)— вызывается после того, как представление было полностью скрыто. Подходящее место для отписки от событий или освобождения ресурсов, не нужных в фоне.
Пример:
class CurrentViewController: UIViewController {
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// Приостанавливаем видео или анимацию
player.pause()
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
// Освобождаем тяжелые ресурсы
cache.removeAllObjects()
print("Экран исчез")
}
}
Контроллер, на который происходит возврат, получит вызовы viewWillAppear(_:) и viewDidAppear(_:).