我有一個委託/處理程序,我已經在我的UIViewControllers上實現處理超時到遠程web服務。當一個請求到我的Web服務時,返回超時HTTP代碼,委託被調用,並執行以下任務:self.navigationController是第二次加載ViewController
UINavigationController *navController = self.navigationController;
if (navController) {
[navController popToRootViewControllerAnimated:YES];
} else {
NSLog(@"navController is null/nil");
}
如果我做下面的步驟,navController
正確實例化,並出現popToRootViewController
行動。
- 驗證我的上一個登錄的ViewController
- 自動web服務應用觸發SEGUE到CustomMenuViewController
- 等待網絡服務來遠程超時
- 點擊觸發原因請看CustomSubMenuViewController
現在,如果我執行以下步驟,上述代碼塊中的else子句會被觸發,因爲由於某些原因navController未被正確設置:
- 與上 CustomLoginViewController
- 自動賽格瑞的WebService驗證我的應用程序到CustomMenuViewController
- 立即點擊觸發原因請看CustomSubMenuViewController
- 單擊後退按鈕來觸發彈出
- 等待webservice遠程超時
- 點擊觸發一個segue到相同的CustomSubMenuViewController
我的問題是:爲什麼當我第二次加載ViewController時,self.navigationController是否返回null?
在上面的例子調用堆棧應該是這樣的: NavigationController -> CustomLoginViewController -> CustomMenuViewController -> CustomSubMenuViewController
感謝
UPDATE: 仍然沒有作出任何關於此問題的進展!
你有沒有排除任何在http://stackoverflow.com/a/7767160/1445366和http://stackoverflow.com/q/1983620/1445366描述的原因是什麼? –
是 - 自我。當viewController首次被加載時,navigationController是可訪問的,當你離開它然後嘗試連續返回它時,它只是null。 – doug
maake確定你沒有使它在ViewDidDisappear或ViewdidUnload中爲空 – Navi