2013-02-07 40 views
3

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

+1

你的目标是什么?您可以获取当前添加的所有视图控制器。你是否也在寻找你的应用程序使用但尚未显示的视图控制器? – rmaddy

+0

你可以使用一些数组来添加所有的viewcontrollers或者只有可能的方式像UINavigationController或UITabBarController – nsgulliver

回答

1

挂钩在Umka的答案。

不知道你想要做什么,这可能是完全矫枉过正,但它可能会帮助你。

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

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

1

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

也许唯一的方法就是把它们全部放在你完全控制的阵列中。

相关问题