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:
Y a-t-il un appel iOS générique que je peux passer ou faut-il plus d'informations?
UINavigationController
's -popViewControllerAnimated:
la méthode devrait faire ce que vous voulez:
[navigationController popViewControllerAnimated:YES];
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.
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)
Vous devez appeler
popViewControllerAnimated:
ce qui est l'opposé de l'ajout de contrôleurs de vue avec pushViewController:animated:
[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];