Comment correctement ignorer un UINavigationController qui est présenté comme modal?

Dans mon TabBarViewControllerj'ai créer un UINavigationController et à le présenter comme un modal.

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)

À l'intérieur de mon MessageViewControllerc'est comment je veux le faire disparaître:

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")
}

Le problème est que quand j'arrive à la racine de la Vue-Contrôleur et d'essayer de rejeter à la fois l'enfant et le UINavigationController, mon MessagesViewController deinit n'est pas appelé. Quelque chose de prenant, -- les plus susceptibles UINavigationController

source d'informationauteur TIMEX