iOS开发: viewControllers]的原因是什么? 会回来没有?

以下声明返回零…

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

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

非常感谢你的智慧!

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

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

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

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

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