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:
Czy mogę wykonać ogólne połączenie na iOS, czy też potrzebne są dodatkowe informacje?
ios
objective-c
button
uinavigationcontroller
oberbaum
źródło
źródło
[self.navigationController popViewControllerAnimated:YES];
ale nic to nie daje, ale jest ostrzeżenie o dotknięciu tego przycisku, który działa.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.
źródło
Swift 3.0
self.navigationController?.popToRootViewController(animated: true)
self.navigationController?.popViewController(animated: true)
Swift 2.3
self.navigationController?.popToRootViewControllerAnimated(true)
self.navigationController?.popViewControllerAnimated(true)
źródło
Powinieneś zadzwonić
popViewControllerAnimated:
co jest przeciwieństwem dodawania kontrolerów widoku z
pushViewController:animated:
źródło
[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];
źródło