iOS开发:[[self navigationController] viewControllers]的原因是什么?会返回零吗?

时间:2011-05-09 03:16:53

标签: iphone ios ipad uikit

以下声明返回nil ......

NSArray *viewControllersInNavStack = [[self navigationController] viewControllers];

并且这个语句是在一个视图控制器中调用的,它在导航堆栈中大约有四个级别,所以我不明白它是如何或为什么会返回nil。你的想法?

非常感谢你的智慧!

3 个答案:

答案 0 :(得分:3)

听起来不是你的问题,但是文档说“如果视图控制器在其堆栈中,则仅返回导航控制器。如果找不到导航控制器,则此属性为nil。”

首先检查[self navigationController]是否返回nil。如果没有,则viewControllers]必须,但首先将其分解。

答案 1 :(得分:1)

你在检查什么?很可能self.navigationController尚未被环境填充。你能否确认self.navigationController不是0x0?

如果是这样,你可以将你的代码从init(我假设你拥有它的地方)移到viewDidLoad;

答案 2 :(得分:0)

我发现了问题。响应ApplicationWillResignActive通知正在调用此语句。好吧,堆栈上方的其他视图控制器之一也在监听相同的通知,并且其处理程序从堆栈中弹出视图控制器,以及堆栈中更深层次的所有其他视图控制器,包括执行上述代码的控制器。因此,在执行代码时,其视图控制器不再在堆栈中。