Piszę aplikację na system iOS 8 i używam nowych prezentacji adaptacyjnych przy użyciu kombinacji "Pokaż" i "Pokaż szczegóły" oraz showViewController:sender:
i showDetailViewController:sender:
metody.Co jest programowym przeciwieństwem programu showViewController: nadawca:
Moje pytanie brzmi: jaki jest programowy sposób powrotu po zadzwonieniu pod numer showViewController:sender:
? Sposób wyświetlania kontrolera widoku zależy od kontekstu nadrzędnego. Na przykład. w UINavigationController
showViewController:sender:
popycha nowy kontroler na stos nawigacyjny, ale jeśli nie ma żadnego kontenera UIKit na grafu kontrolera widoku, to zamiast tego zamiast niego wyświetla się showViewController:sender:
.
Zważywszy mogę napisać własny dowolny kontroler kontenerów wydaje się niemożliwe, by sprawdzić
if (self.navigationController) {
[self.navigationController popViewControllerAnimated:YES];
}
else if (self.presentingViewController){
...
else if ([self.parentViewController isKindOfClass:[CrazyCustomContainer class]]){
[self.parentViewController someWackyUnwindMethod];
}
...
itp ... więc nie jest to ogólny sposób, aby odwrócić pokazano? Jeśli nie, jedynym rozwiązaniem, jakie widzę, jest użycie odwijania seguesów na wszystko. Nie za dużo kłopotów, ale jestem ciekawy.
Myślę, że częścią tego jest to, że model ma przycisk "Anuluj" i wywoła zwykłe "dismissViewControllerAnimated:", a za pomocą kontrolera nawigacji będzie miał wbudowany przycisk "Wstecz". Dlatego nie musisz często obsługiwać zwolnień w taki sam sposób, jak prezentacje uchwytów. –
Ale to jest mój punkt: 'showViewController:' może zrobić albo push lub prezentacji. Przedstawiony kontroler widoku nie powinien wiedzieć, w jaki sposób został wyświetlony na ekranie, więc robienie czegoś takiego jak '[self.navigationController popViewControllerAnimated:]' w prezentowanym nie jest dobre, jeśli czasami może się nie udać, ponieważ został przedstawiony ... – jackslash
Cóż za navController nie musiałbyś pop. Miałby grzbiet. –