Mam delegata/obsługi, które mam zaimplementowane na moim UIViewControllers do obsługi limitów czasu do zdalnego serwisu. Gdy wniosek zostanie złożony do mojego usługa, a zwracana jest timeout kod http, delegat nazywa i wykonuje następujące czynności:self.navigationController jest już po raz drugi ViewController jest ładowany
UINavigationController *navController = self.navigationController;
if (navController) {
[navController popToRootViewControllerAnimated:YES];
} else {
NSLog(@"navController is null/nil");
}
Gdybym wykonać następujące kroki, navController
jest tworzony poprawnie, a akcja popToRootViewController
występuje.
- uwierzytelnić moją aplikację z usługa na Logowanie ViewController
- Auto wywołać segue do CustomMenuViewController
- czekać na webservice do Timeout zdalnie
- Kliknij aby wywołać segue do CustomSubMenuViewController
Teraz, jeśli wykonam następujące kroki, zostanie uruchomiona klauzula else w powyższym bloku kodu, ponieważ z pewnych powodów navController nie jest poprawnie ustawiony:
- uwierzytelnić moją aplikację z usługa na CustomLoginViewController
- Auto segue do CustomMenuViewController
- Natychmiast kliknij, aby wywołać segue do CustomSubMenuViewController
- Kliknij przycisk Wstecz, aby wywołać pop
- Poczekaj usługa sieci Web do zdalnego limitu czasu:
- Kliknij, aby wywołać przejście na to samo CustomSubMenuViewController
Moje pytanie brzmi: dlaczego po załadowaniu ViewController po raz drugi, czy self.navigationController zwraca null?
Stos wywołań w powyższym przykładzie powinien wyglądać następująco: NavigationController -> CustomLoginViewController -> CustomMenuViewController -> CustomSubMenuViewController
Dzięki
UPDATE: Nadal nie dokonano żadnych postępów w tej sprawie!
Czy wykluczyć żadnej z przyczyn opisanych w http://stackoverflow.com/a/7767160/1445366 i http://stackoverflow.com/q/1983620/1445366? –
Tak - ja.navigationController jest dostępny, gdy viewController jest ładowany po raz pierwszy, jest tylko zerowy, kiedy od niego odejdziesz, a następnie spróbujesz powrócić do niego po kolei. – doug
Upewnij się, że nie robisz tego null w ViewDidDisappear lub ViewdidUnload – Navi