Appeler par programme le bouton de retour du contrôleur de navigation sur iOS


84

Dans une application iPhone basée sur UINavigationController, dans une méthode, je voudrais effectuer l'équivalent programmatique du bouton de retour enfoncé et revenir à une vue.

c'est-à-dire appuyez automatiquement sur le bouton Jobs comme vu ici:

Image du contrôleur de navigation

Y a-t-il un appel iOS générique que je peux passer ou des informations supplémentaires sont-elles nécessaires?

Réponses:


188

UINavigationControllerLa -popViewControllerAnimated:méthode de doit faire ce que vous voulez:

[navigationController popViewControllerAnimated:YES];

12
génial, merci à Steve et Niels. La solution que j'ai utilisée était [self.navigationController popViewControllerAnimated: YES]; easy;)
oberbaum

cela fonctionne très bien sauf les contrôleurs de vue ajoutés sur uitabbar. des indices ??
virata

1
J'ai ajouté [self.navigationController popViewControllerAnimated:YES];mais cela ne fait rien, mais il y a une alerte lorsque vous appuyez sur ce bouton qui fonctionne.
mohsin.mr

Hmm, j'obtiens un écran vide, une application qui ne répond pas et ce qui suit dans la console: "Fin d'une transition de navigation dans un état inattendu. L'arborescence de la sous-vue de la barre de navigation peut être corrompue."
Kurt

24

En supposant que vous ne souhaitiez pas réellement APPUYER sur le bouton par programme, mais simplement copier le résultat de la pression sur le bouton, vous devez indiquer au contrôleur de navigation de faire apparaître le contrôleur de vue actuel.

[self.navigationController popViewControllerAnimated:YES];

Cela le supprimera de la pile et vous ramènera au contrôleur de vue précédent.


21

Swift 3.0

Retour à la vue racine

self.navigationController?.popToRootViewController(animated: true)

Retour à la vue précédente

self.navigationController?.popViewController(animated: true)

Swift 2.3

Retour à la vue racine

self.navigationController?.popToRootViewControllerAnimated(true)

Retour à la vue précédente

self.navigationController?.popViewControllerAnimated(true)

7

Tu devrais appeler

popViewControllerAnimated:

ce qui est l'opposé de l'ajout de contrôleurs de vue avec pushViewController:animated:


6
[self.navigationController popViewControllerAnimates:YES];

est la meilleure option, mais si vous n'êtes ni sur la même classe de contrôleur de vue ou si votre délégué change avant que votre méthode de bouton de retour ne soit appelée, vous pouvez également essayer -

vous devez d'abord définir le bouton retour ---

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"anyTitleForBackButton" style: UIBarButtonItemStyleBordered target: nil action: @selector(backButtonTapped)];

[[self navigationItem] setBackBarButtonItem: newBackButton];

[newBackButton release];

puis dans la méthode backButtonTapped, vous pouvez appeler -

[self.navigationController pushViewController:desiredViewController animated:YES];
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.