2011-10-20 3 views
0

Je suis confus au sujet du contrôleur de navigation push et du contrôleur de navigation pop. par exemple:UINavigationController: navigation confusion

J'ai 5 vue contrôleur A, B, C, D, E. J'atteins le contrôleur E en poussant la navigation depuis A. Maintenant, après une tâche, j'ai besoin de naviguer directement vers le contrôleur C. Je sais que je peux le faire en utilisant la méthode ci-dessous.

[self.navigationController popToViewController: animated:]; 

Mais je veux savoir ce qu'en est-il du contrôleur D? sera-t-il en pile ou retiré de la pile? Si D serait en pile alors comment l'enlever de la pile?

Répondre

3

Lorsque vous appelez la méthode

popToViewController:C animated:YES 

Toutes les vi ews jusqu'à C sont sautés.

son semblable appel popViewControllerAnimated: 2 fois (lorsque vous êtes à E).

Si vous voulez suivre la progression, vous pouvez mettre quelques NSLog dans viewDidUnload/Dealloc (sans ARC).

1

Si vous n'avez pas poussé le contrôleur D sur la pile, ce n'est pas sur la pile.

Si vous avez placé le contrôleur D sur la pile et que vous l'avez rencontré avant, il apparaîtra également et ne sera plus sur la pile. Si ce n'était pas le cas, utiliser un UINavigationController serait inutile.

1

utiliser ce

[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:2] animated:YES] 

viewControllers est un tableau qui contient les vues qui sont dans la truie contrôleur de navigation si vous voulez atteindre la vue C whitc est n ° 2 dans la pile il suffit d'utiliser la commande ci-dessus, en utilisant cette commande le reste des points de vue ci-dessous C sera retiré de la pile

Questions connexes