Donc, le problème est que lorsque quelqu'un touche le bouton de retour sur le UINavigationControler, je voudrais exécuter du code pour mettre à jour la source de données.UINavigationController interception - popViewControllerAnimated:
Le problème est que je ne peux pas sembler trouver le bon délégué pour le faire. seulement ceux-ci sont disponibles sur le délégué de contrôleur de nav, et je veux la méthode de type «didfinishshowing». Le prochain meilleur endroit que j'ai pensé était le bar de navigation mais quand j'essaye cela.
Mettre fin application en raison de uncaught exception 'NSInternalInconsistencyException', raison: « Impossible de définir manuellement le délégué sur un UINavigationBar géré par un contrôleur
Cela est logique rétrospectivement, comme vous don Je ne veux pas qu'un pirate pirate les composants internes du contrôleur de navigation et l'empêche de fonctionner.
Ce doit être un problème commun, et j'ai manqué quelque chose de simple.
Ce n'est pas une solution, mais j'ai remarqué que si UINavigationController est instancié à partir d'un storyboard, vous n'obtenez pas l'exception NSInternalInconsistencyException. – hyperspasm
Vous pouvez également faire en sorte que UINavigationController ait une sous-classe UINavigationBar personnalisée, par exemple.'[[UINavigationController alloc] initWithNavigationBarClass: [classe MyNavigationBar] toolbarClass: nil]' et ensuite redéfinir '- (UINavigationItem *) popNavigationItemAnimated: (BOOL) animated' dans la sous-classe UINavigationBar. – hyperspasm