我有一个委托/处理程序,我已经在我的UIViewControllers上实现了处理远程Web服务的超时。当向我的webservice发出请求并返回超时http代码时,将调用该委托并执行以下操作:
UINavigationController *navController = self.navigationController;
if (navController) {
[navController popToRootViewControllerAnimated:YES];
} else {
NSLog(@"navController is null/nil");
}
如果我执行以下步骤,则navController
会正确实例化并发生popToRootViewController
操作。
现在,如果我执行以下步骤,则会触发上述代码块中的else子句,因为某些原因导航设备未正确设置:
我的问题是:为什么当我第二次加载ViewController时,self.navigationController是否返回null?
上例中的调用堆栈应如下所示:
NavigationController -> CustomLoginViewController -> CustomMenuViewController -> CustomSubMenuViewController
由于
更新: 在这个问题上仍然没有取得任何进展!
答案 0 :(得分:2)
嘿,这可能听起来很基本,但是,你是否正确分配了Navbar对象,也许你可以尝试将其属性设置为强大。也许这样它就会在时间之前被释放。
答案 1 :(得分:0)
我想你可能已经解决了这个问题,但我遇到了同样的事情。而且我认为我们可能会像使用Facebook登录一样完全一样。无论如何,对于未来的其他人来说,这可能是有用的。我遇到的问题是在故障情况下从后台返回时再次重新分配UINavigationController。
所以你可以做的是尝试在初始化uiNavigationController的rootViewController的地方放置一个断点。
[[UINavigationController alloc]
initWithRootViewController:viewController]; and make sure that you do re-initailise your UINavigationController if you have already done it.