В моем TabBarViewController
я создаю UINavigationController и представляю его как модальный.Как правильно убрать UINavigationController, который представлен как модальный?
var navController = UINavigationController()
let messageVC = self.storyboard?.instantiateViewControllerWithIdentifier("MessagesViewController") as! MessagesViewController
self.presentViewController(self.navController, animated: false, completion: nil)
self.navController.pushViewController(messageVC, animated: false)
Внутри моей MessageViewController
, это то, как я хочу, чтобы закрыть его:
func swipedRightAndUserWantsToDismiss(){
if self == self.navigationController?.viewControllers[0] {
self.dismissViewControllerAnimated(true, completion: nil) //doesn't deinit
}else{
self.navigationController?.popViewControllerAnimated(true) //deinits correctly
}
}
deinit{
print("Deinit MessagesViewController")
}
Проблема заключается в том, что, когда я получаю к корневому View Controller и попытаться отклонить оба ребенка и UINavigationController, мой MessagesViewController
deinit не вызывается. Что-то держит на него - скорее всего UINavigationController
спасибо. Если у меня есть много контроллеров представлений в стеке, но мой делегат вызывает '' 'rejectViewControllerAnimated''', а затем устанавливает его в nil, будет ли он деинировать ** все ** контроллеров представления в стеке? – TIMEX
Когда вы отпустите все ссылки на 'navController', все его контроллеры будут уничтожены, если вы не держите их где-то в другом месте. – Sulthan
Вы также не сможете убрать контроллер представления, который был настроен как rootviewcontroller. Так что если: –