Je veux revenir à la troisième vue de la pile de navigation et revenir à la première vue.
Je sais comment afficher une vue à la fois:
[self.navigationController popViewControllerAnimated:YES];
Mais comment faire deux à la fois?
ios
iphone
uinavigationcontroller
Adam Waite
la source
la source
Réponses:
Vous pouvez également essayer ceci pour sauter entre la pile du contrôleur de navigation
la source
Voici deux
UINavigationController
extensions qui peuvent résoudre votre problème. Je recommanderais d'utiliser le premier qui apparaît dans uneUIViewController
classe spécifique:et utilisez-le comme ceci:
la source
removeLast
par justeremoveLast(2)
.let vc = viewControllers[viewControllers.count - viewsToPop + 1]
, afin de fonctionner correctement, vous devez le remplacer par:let vc = viewControllers[viewControllers.count - (viewsToPop + 1)]
oulet vc = viewControllers[viewControllers.count - viewsToPop - 1]
Vous pouvez accéder au contrôleur de vue «racine» (premier) avec
popToRootViewControllerAnimated
:UINavigationController
Référence :la source
objectAtIndex: 1 -> vous pouvez passer l'index auquel vous souhaitez accéder
la source
Swift 2 - xCode 7.3
Cela pourrait être une extension très utile pour pop UIViewControllers:
la source
Si vous voulez juste afficher 2 à la fois parce que votre rootViewController est (beaucoup) `` plus profond '', alors 2 vous pouvez envisager d'ajouter une catégorie à UIviewController par exemple:
UINavigationController + popTwice.h
UINavigationController + popTwice.m
Importez la catégorie
#import "UINavigationController+popTwice.h"
quelque part dans votre implémentation et utilisez cette ligne de code pour afficher 2 contrôleurs à la fois:n'est-ce pas génial? :)
la source
Ensuite, utilisez cette méthode
la source
Vous pouvez également essayer celui-ci: -
la source
la source
la source
Dans Swift 3 , vous pouvez afficher un, deux ou plusieurs contrôleurs de vue à partir du contrôleur de navigation comme ça
Ici FromWhereYouWantToGoController est le contrôleur de destination. J'espère que ça aide.
la source
Vous pouvez passer le contrôleur de vue initial (celui sur lequel vous voulez revenir) puis appeler cette ligne dans la dernière vue:
L.
la source
Je n'ai pas vu cette réponse ici. Si vous ne voulez en afficher que quelques-uns (pas jusqu'à la racine), vous pouvez simplement parcourir self.navigationController.viewControllers en vérifiant les types de classe, ou si vous avez une référence, utilisez cela:
la source
vous pouvez revenir au contrôleur de vue racine
ou, si la vue que vous souhaitez afficher n'est pas la première, vous devrez à nouveau apparaître dans la vue de votre vue précédente.
la source
Voici une petite fonction que j'utilise pour revenir en arrière sur X ViewControllers:
la source
Version Swift à partir de (Swift 1.2 / Xcode 6.3.1) de popping deux fois ou plus
ou
la source
Vous pouvez utiliser la pile des UIViewControllers. 1. Récupérez le tableau de tous les viewControllers de la pile. 2. Parcourez tout le tableau et trouvez le viewController souhaité en faisant
correspondre le type de classe. 3. Ouvrez le viewController.
la source
En utilisant une simple extension UINavigationController :
la source