我有一个委托/处理程序,我在我的 UIViewControllers 上实现了处理远程 Web 服务的超时。当向我的 web 服务发出请求并返回超时 http 代码时,将调用委托并执行以下操作:
UINavigationController *navController = self.navigationController;
if (navController) {
[navController popToRootViewControllerAnimated:YES];
} else {
NSLog(@"navController is null/nil");
}
如果我执行以下步骤,navController
则正确实例化并popToRootViewController
发生操作。
- 使用 Login ViewController 上的 web 服务对我的应用程序进行身份验证
- 自动触发对 CustomMenuViewController 的 segue
- 远程等待 web 服务超时
- 单击以触发对 CustomSubMenuViewController 的 segue
现在,如果我执行以下步骤,则会触发上述代码块中的 else 子句,因为由于某些原因 navController 未正确设置:
- 使用 CustomLoginViewController 上的 web 服务对我的应用程序进行身份验证
- 自动切换到 CustomMenuViewController
- 立即单击以触发对 CustomSubMenuViewController 的 segue
- 单击后退按钮以触发弹出
- 远程等待 web 服务超时
- 点击触发到同一个 CustomSubMenuViewController 的 segue
我的问题是:为什么当我第二次加载 ViewController 时,self.navigationController 是否返回 null?
上面示例中的调用堆栈应如下所示:
NavigationController -> CustomLoginViewController -> CustomMenuViewController -> CustomSubMenuViewController
谢谢
更新:在这个问题上仍然没有任何进展!