【问题标题】:How to get all the application's ViewControllers in iOS?如何在 iOS 中获取所有应用程序的 ViewControllers?
【发布时间】:2013-02-07 17:50:24
【问题描述】:

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

【问题讨论】:

  • 你的目标是什么?您可以获得当前添加的所有视图控制器。您是否还在寻找您的应用使用但尚未展示的视图控制器?
  • 你可以使用一些数组来添加所有的视图控制器,或者只有像 UINavigationController 或 UITabBarController 这样的方法

标签: ios objective-c cocoa-touch uiviewcontroller


【解决方案1】:

关注 Umka 的答案。

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多