W moim TabBarViewController
tworzę kontroler UINavigationController i przedstawiam go jako modalny.Jak poprawnie odrzucić UINavigationController, który jest prezentowany jako modalny?
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)
Wewnątrz mojego MessageViewController
, to jak chcę go odwołać:
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")
}
Problemem jest to, że kiedy się do głównego View Controller i próbować odwołać zarówno dziecka i UINavigationController, mój deinit nie zostanie wywołany. Coś trzyma się go - najprawdopodobniej UINavigationController
Dzięki. Jeśli mam wiele kontrolerów widoku w stosie, ale mój delegat wywołuje 'dismissViewControllerAnimated''', a następnie ustawia go na zero, czy deinituje ** wszystkie ** kontrolerów widoku w stosie? – TIMEX
Po zwolnieniu wszystkich odwołań do 'navController', wszystkie kontrolery widoku zostaną zniszczone, jeśli nie będziesz ich trzymał gdzie indziej. – Sulthan
Nie można także odrzucić kontrolera widoku, który został ustawiony jako kontroler rootview. Więc jeśli: –