【问题标题】:iOS - reference active storyboard view controller from external classiOS - 从外部类引用活动故事板视图控制器
【发布时间】:2016-05-10 14:33:48
【问题描述】:

我真的是 Objective C 的新手,我有一个带有故事板的应用程序,带有一个带有 MyViewController 类的 ViewController。然后我有 CDVPlugin(用于我的 cordova 应用程序)。从我的科尔多瓦应用程序中的一种方法,我希望能够引用 Active ViewController 并从中调用其中一个函数。我已经导入了 MyViewController.h 标头,我在想也许有一种方法可以让一个人成为另一个人的代表,但我觉得这是处理这个问题的错误方法?

有什么想法吗?

【问题讨论】:

  • 在 MyViewController.h 中,您可以声明该函数,在 .m 文件中执行其实现,并在您的 Active View 控制器中初始化“MyViewCONtroller”类,使用其对象访问该函数。
  • 你的意思是,例如MyViewController * myViewController = [[MyViewController alloc] init] 然后[myViewController function] 如果我想用它来连接到另一个ViewController,这是否适用?我对 Objective C 还不是很满意,这让我觉得它会实例化一个不必要的视图控制器......还是我看错了?
  • 我还需要参考具体的,因为我要使用performSegueWithIdentifier。

标签: ios objective-c cordova


【解决方案1】:

您可以使用以下方法获取应用程序的当前根视图控制器:

[UIApplication sharedApplication].delegate.window.rootViewController

根视图控制器可能是活动视图控制器,也可能是导航控制器,在这种情况下,您可能需要以下内容:

UIViewController *active = ((UINavigationController *)[UIApplication sharedApplication].delegate.window.rootViewController).visibleViewController
if [active isKindOfClass: [MyViewController class]] {
    MyViewController *myViewController = (MyViewController *)active
    // Call any methods you need to on myViewController
}

【讨论】:

  • 非常感谢,有没有办法可以确认它是特定类型的视图控制器,即MyViewController
  • @AlecGamble 当然,我用这样做的例子更新了答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-08
  • 1970-01-01
  • 1970-01-01
  • 2018-01-01
相关资源
最近更新 更多