Programowo wywołaj przycisk Wstecz kontrolera nawigacji w systemie iOS


84

W aplikacji na iPhone'a opartej na UINavigationController w metodzie chciałbym wykonać programowy odpowiednik naciśnięcia przycisku Wstecz i cofnięcia widoku.

tj. automatycznie naciśnij przycisk Jobs, jak widać tutaj:

Obraz kontrolera nawigacji

Czy mogę wykonać ogólne połączenie na iOS, czy też potrzebne są dodatkowe informacje?

Odpowiedzi:


188

UINavigationController„s -popViewControllerAnimated:metoda powinna zrobić to, co chcesz:

[navigationController popViewControllerAnimated:YES];

12
super, dzięki Steve i Niels. Rozwiązaniem, którego użyłem, było [self.navigationController popViewControllerAnimated: YES]; łatwe;)
oberbaum

działa to świetnie, z wyjątkiem kontrolerów widoku dodanych na uitabbar. jakieś wskazówki?
virata,

1
Dodałem, [self.navigationController popViewControllerAnimated:YES];ale nic to nie daje, ale jest ostrzeżenie o dotknięciu tego przycisku, który działa.
mohsin.mr

Hmm, pojawia się pusty ekran, nieodpowiadająca aplikacja i następujący komunikat w konsoli: „Kończenie przejścia nawigacji w nieoczekiwanym stanie. Drzewo podwidoku paska nawigacji może zostać uszkodzone”.
Kurt

24

Zakładając, że w rzeczywistości nie chcesz programowo naciskać przycisku, ale po prostu skopiuj wynik naciśnięcia przycisku, powinieneś powiedzieć kontrolerowi nawigacji, aby wyskoczył z bieżącego kontrolera widoku.

[self.navigationController popViewControllerAnimated:YES];

Spowoduje to usunięcie go ze stosu i powrót do poprzedniego kontrolera widoku.


21

Swift 3.0

Wróć do widoku głównego

self.navigationController?.popToRootViewController(animated: true)

Powrót do poprzedniego widoku

self.navigationController?.popViewController(animated: true)

Swift 2.3

Wróć do widoku głównego

self.navigationController?.popToRootViewControllerAnimated(true)

Powrót do poprzedniego widoku

self.navigationController?.popViewControllerAnimated(true)

7

Powinieneś zadzwonić

popViewControllerAnimated:

co jest przeciwieństwem dodawania kontrolerów widoku z pushViewController:animated:


6
[self.navigationController popViewControllerAnimates:YES];

jest najlepszą opcją, ale jeśli nie jesteś w tej samej klasie kontrolera widoku lub Twój delegat zmienił się przed wywołaniem metody przycisku Wstecz, możesz również spróbować:

najpierw musisz zdefiniować przycisk Wstecz ---

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

[[self navigationItem] setBackBarButtonItem: newBackButton];

[newBackButton release];

a następnie w metodzie backButtonTapped możesz wywołać:

[self.navigationController pushViewController:desiredViewController animated:YES];
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.