Итак, у меня есть нормальный UINavigationController
с его rootViewController
, установленным в раскадровке. Всякий раз, когда я заменить навигационный контроллер (не спрашивайте почему, но некоторые переходы в моем приложении требуют всего стека должны быть заменено на новом контроллере) с помощьюSwift: rootViewController никогда не имеет своего представления [Will/Did] Disappear методы, называемые
var newController: UIViewController!
// newController is initiated at some point
...
if let navigationController = self.navigationController {
navigationController.setViewControllers([newController])
}
И я могу визуально видеть переход произойдет, но ни вызываются методы viewWillDisappear или viewDidDisappear. Когда я впоследствии заменяю стек навигационного контроллера, они вызываются, как ожидалось. Есть ли что-то особенное в корне, что мешает им быть вызванным?
Я думаю, это потому, что при переключении корневого контроллера представления не исчезают. Попробуйте вызвать 'увольнение (анимированный: false)' на представлениях, от которых вы избавитесь. –
Не является ли увольнением предназначенный для просмотра, который представлен модально? –