如何在iOS中获取所有应用程序的ViewControllers?

时间:2013-02-07 17:50:24

标签: ios objective-c cocoa-touch uiviewcontroller

如何在运行时获取应用程序的所有ViewControllers?据我所知self.navigationcontroller.viewControllers只返回导航堆栈中那些控制器的NSArray。但是有什么方法可以访问我的应用程序的ViewControllers吗?

2 个答案:

答案 0 :(得分:1)

AFAIK没有这样的方式,除非你照顾好自己。您可以访问所有导航控制器,但它们只能保存堆栈中当前初始化的控制器。总是有控制器可能不在任何导航中,例如,模态视图控制器。如果你需要这个,我会说你做错了什么:)

也许唯一的方法是将它们全部保存在您完全控制的数组中。

答案 1 :(得分:1)

接受Umka的回答。

如果不确切知道自己想要做什么,这可能完全有点过头了,但它可能对你有帮助。

你可以继承UIViewController(例如AddToArrayViewController),并在自定义init方法中将它添加到你在某处定义的一些Singleton。这样,无论何时初始化ViewController(它是AddToArrayViewController的子类),它都将被添加到Singleton中的数组中。

但是,你需要确保在删除/清理ViewControllers时也删除它们,否则你只会在该数组中有一个悬空指针列表,这不是很安全。