Comment puis-je supprimer une vue à partir de la manette de navigation
Je veux appeler un nouveau point de vue contrôleur et de supprimer l'affichage actuel du contrôleur de la manette de navigation de la pile.
Par exemple. Je suis en-vue-contrôleur Un et je l'appelle B.
Maintenant je l'ai dans la pile A , B.
Maintenant, je veux appeler C (B).
Je veux de la pile pour en être Un, C.
Grâce.
OriginalL'auteur Tony | 2011-12-21
Vous devez vous connecter pour publier un commentaire.
Dans le contexte d'ARC, voici une solution possible:
Comme vous pouvez le dire, ce code remplace l'habitude de pousser code dans la vue que vous tentez de supprimer à partir de la pile ("B", dans votre question). Ligne 1 des exemplaires de la liste des contrôleurs de vue de la valeur liquidative-contrôleur de pile dans un
NSMutableArray
. Ligne 2 remplace le dernier (celui du haut) voir avec le point de vue que nous voulons passer à la suivante ("C"). Ligne 3 fait de la réelle nav-contrôleur de la pile à être modifié notre tableau, et anime la transition vers l'élément de niveau supérieur. (Bien sûr, vous ne pouvez pas utiliser ce code à la racine viewController.)J'ai trouvé une autre façon ici et adaptée pour l'ARC:
La première ligne est nécessaire, car une fois que vous avez sauté le point de vue actuel de la pile,
self.navigationController
seranil
et la troisième ligne ne fonctionne pas. Même nombre de lignes que la précédente, mais cela fonctionne par le biais de méthodes à la place de "manuellement" jongler avec la pile.merci, l'explication est excellente!
OriginalL'auteur JohnK
C'est la réponse.
Le code suivant saute à la vue actuelle du contrôleur.
Et cela pousse le nouveau:
Espère que cela aide!
retain
voir ma solution, ci-dessous.
OriginalL'auteur Tony
Pour supprimer la deuxième à partir du dernier élément de navigation:
Par exemple, l'exécuter à partir de
viewDidLoad
sur le contrôleur C pour supprimer le contrôleur de B à partir de la pile de navigation.OriginalL'auteur mopsled
Je pense que vous pouvez le faire en premier popping B de pile de navigation et d'aller ensuite C en elle. Vous devriez être en mesure d'utiliser [UINavigationController popViewControllerAnimated] et [UINavigationController pushViewController:animation] pour cette.
Selon Apple de référence, developer.apple.com/library/ios/#documentation/uikit/reference/... UINavigationController n'est pas destiné à être sous-classé. Pourquoi quelque chose de si simple, est-il si complexe?
My bad, j'ai tout oublié. Ignorer mon commentaire précédent et à modifier. Je vais supprimer tous les...
OriginalL'auteur barley
Vous pouvez utiliser ce code.
NSMutableArray *navigationArray = [[NSMutableArray alloc] initWithArray: auto.navigationController.viewControllers];
[navigationArray removeAllObjects]; self.navigationController.viewControllers = navigationArray;
Espère que cela va fonctionner pour vous.
OriginalL'auteur user3875668