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?

Antworten:


188

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

[navigationController popViewControllerAnimated:YES];

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.


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)

7

Sie sollten anrufen

popViewControllerAnimated:

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


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];
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.