2012-09-27 5 views
0

Je suis en train de montrer UIViewController B. Je veux pousser UIViewController C et immédiatement retirer B de la pile de navigation tout en gardant toutes les animations. Quelle est la meilleure façon de faire cela? La pile finale est A, C.Pop actuel UIViewController et pousser un autre

Répondre

1

Je ne suis pas sûr si c'est une bonne idée mais vous pouvez le faire de cette façon.

Dans votre C viewcontroller, par exemple dans la méthode viewDidLoad Mettre ce code

NSMutableArray *viewControllerAfterRemove=[[NSMutableArray alloc]initWithArray:self.navigationController.viewControllers]; 
[viewControllerAfterRemove removeObjectAtIndex:1]; 
self.navigationController.viewControllers=viewControllerAfterRemove; 

Maintenant, quand vous popViewController dans votre contrôleur de vue C, il permet d'y retourner Une vue contrôleur.

+0

Je suggère de demander au tableau l'index de 'self', puis de supprimer l'objet à index-1 (en supposant que ce soit 0 ou un nombre positif.) Deuxièmement, je ne suis pas sûr que vous voulez faire ça dans viewDidLoad, plutôt regarder à l'aide de viewDidAppear (qui dit que la réponse ci-dessus fonctionnera probablement bien) –

+0

@DavidH Je suis d'accord avec votre première partie mais concernant la deuxième partie, je recommande de le faire dans viewDidLoad et plutôt pas dans viewDidAppear parce que, disons vous avoir plus de viewcontroller au-delà du contrôleur C view, si vous poussez sur view pour plus de vue controller C (par exemple disons C => D view controller) alors tout l'application est recopiée D => C il supprime un objet du self.navigationController .viewControllers inutile car le viewController B a déjà été supprimé lorsque l'application a navigué depuis B => C. – Neo

+0

elf, et quand je fais cela, j'utilise un drapeau pour déterminer si c'est la deuxième fois dans viewDidAppear. J'étais juste préoccupé par le fait de débloquer avec viewControllers pendant que le navController en animait un en vue. Cela fonctionnera ou non; En tout cas, il y aura une solution dans le sens que vous avez suggéré. –

Questions connexes