3

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

4

2 回答 2

1

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

也许做到这一点的唯一方法是将它们全部排列在您完全控制的阵列中。

于 2013-02-07T17:55:28.033 回答
1

关注 Umka 的答案。

在不确切知道您想做什么的情况下,这可能完全是矫枉过正,但它可能会对您有所帮助。

您可以继承 UIViewController(例如 AddToArrayViewController),并在自定义 init 方法中将其添加到您在某处定义的单例中。这样,每当您初始化 ViewController(它是 AddToArrayViewController 的子类)时,它将被添加到 Singleton 中的数组中。

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

于 2013-02-08T07:53:18.737 回答