Rufen Sie unter iOS programmgesteuert die Zurück-Taste des Navigationscontrollers auf

84

In einer iPhone-App auf UINavigationController-Basis möchte ich in einer Methode das programmatische Äquivalent der Zurück-Taste ausführen, die gedrückt wird, und eine Ansicht zurückgehen.

dh automatisch die Jobs-Taste drücken, wie hier zu sehen:

Navigationscontroller-Bild

Gibt es einen allgemeinen iOS-Anruf, den ich tätigen kann, oder sind weitere Informationen erforderlich?

oberbaum
quelle

Antworten:

188

UINavigationControllerDie -popViewControllerAnimated:Methode sollte tun, was Sie wollen:

[navigationController popViewControllerAnimated:YES];
Steve Harrison
quelle
12
Super, danke an Steve und Niels. Die von mir verwendete Lösung war [self.navigationController popViewControllerAnimated: YES]; einfach;)
oberbaum
Dies funktioniert hervorragend, mit Ausnahme von Viewcontrollern, die auf uitabbar hinzugefügt wurden. irgendwelche Hinweise??
Virata
1
Ich habe hinzugefügt, [self.navigationController popViewControllerAnimated:YES];aber es tut nichts, es gibt jedoch eine Warnung beim Tippen auf die Schaltfläche, die funktioniert.
Mohsin.mr
Hmm, ich erhalte einen leeren Bildschirm, eine nicht reagierende App und Folgendes in der Konsole: "Beenden eines Navigationsübergangs in einem unerwarteten Zustand. Der Unteransichtsbaum der Navigationsleiste wird möglicherweise beschädigt."
Kurt
24

Angenommen, Sie möchten die Schaltfläche nicht programmgesteuert DRÜCKEN, sondern einfach das Ergebnis des Drückens der Schaltfläche kopieren, sollten Sie den Navigationscontroller anweisen, den aktuellen Ansichtscontroller zu öffnen.

[self.navigationController popViewControllerAnimated:YES];

Dadurch wird es vom Stapel entfernt und Sie kehren zum vorherigen Ansichts-Controller zurück.

Kevin Elliott
quelle
21

Swift 3.0

Zurück zur Stammansicht

self.navigationController?.popToRootViewController(animated: true)

Zurück zur vorherigen Ansicht

self.navigationController?.popViewController(animated: true)

Swift 2.3

Zurück zur Stammansicht

self.navigationController?.popToRootViewControllerAnimated(true)

Zurück zur vorherigen Ansicht

self.navigationController?.popViewControllerAnimated(true)
Tal Zion
quelle
7

Sie sollten anrufen

popViewControllerAnimated:

Dies ist das Gegenteil von Hinzufügen von View Controllern mit pushViewController:animated:

Schloss Niels
quelle
6
[self.navigationController popViewControllerAnimates:YES];

ist die beste Option, aber wenn Sie sich noch nicht in derselben View-Controller-Klasse befinden oder Ihr Delegat Änderungen vor dem Aufruf Ihrer Back-Button-Methode vornimmt, können Sie auch Folgendes versuchen:

Zuerst müssen Sie den Zurück-Button definieren ---

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

[[self navigationItem] setBackBarButtonItem: newBackButton];

[newBackButton release];

und dann können Sie in der backButtonTapped-Methode-- aufrufen

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