web-dev-qa-db-fra.com

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

Dans une application iPhone basée sur UINavigationController, dans une méthode, je voudrais effectuer l'équivalent programmatique du bouton Retour appuyé et revenir en arrière.

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

Navigation Controller image

Y a-t-il un appel iOS générique que je peux passer ou faut-il plus d'informations?

84
oberbaum

UINavigationController's -popViewControllerAnimated: la méthode devrait faire ce que vous voulez:

[navigationController popViewControllerAnimated:YES];
188
Steve Harrison

En supposant que vous ne vouliez pas réellement APPUYER sur le bouton par programme, mais simplement copier le résultat de la pression sur le bouton, vous devez dire 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.

24
Kevin Elliott

Swift 3.

Retour à la vue racine

self.navigationController?.popToRootViewController(animated: true)

Retour à la vue précédente

self.navigationController?.popViewController(animated: true)

Swift 2.

Retour à la vue racine

self.navigationController?.popToRootViewControllerAnimated(true)

Retour à la vue précédente

self.navigationController?.popViewControllerAnimated(true)
21
Tal Zion

Vous devez appeler

popViewControllerAnimated:

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

7
Niels Castle
[self.navigationController popViewControllerAnimates:YES];

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

vous devez d'abord définir le bouton de 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 call--

[self.navigationController pushViewController:desiredViewController animated:YES];
6
Nishant Mahajan