Comment puis-je obtenir une référence à l'actuel UINavigationController?

En Objective-C, quelle est la meilleure façon d'obtenir une référence à l'actuel UINavigationController? Je voudrais accéder à partir de n'importe quelle classe qui ne peut pas avoir une référence à un UIController, délégué, ou quoi que ce soit d'autre.

Est-il un moyen d'obtenir le courant UINavigationController? Dois-je ajouter quelque chose à ma demande délégué, et de les récupérer?

Vous pouvez créer une propriété dans appDelegate, créer de la vue de la base de contrôleur de la sous-classe, remplacer viewWillAppear et là appDelegate.currentNavigationController = self.navigationController;
Mais l'accès à partir de " toute la classe de freiner MVC, pourquoi votre vue personnalisée devez savoir à propos de la navigation?..
Dans ce cas particulier, j'ai peut-être besoin de pousser sur un compte de connexion UIController. J'ai des web services en cours d'exécution asynchrone de travail de tous types de choses. Si l'on reçoit un problème d'Authentification, il doit afficher une boîte d'avoir le login de l'utilisateur.
Si votre manette de navigation est la fenêtre racine de vue-contrôleur, vous pouvez y accéder avec [[UIApplication sharedApplication] keyWindow] rootViewController];
Il serait préférable d'utiliser un NSNotification à cette fin, plutôt que de briser le paradigme MVC.

OriginalL'auteur John Fowler | 2013-01-25