iOS - 从外部类引用活动故事板视图控制器
Posted
技术标签:
【中文标题】iOS - 从外部类引用活动故事板视图控制器【英文标题】:iOS - reference active storyboard view controller from external class 【发布时间】: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。
【参考方案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 当然,我用这样做的例子更新了答案以上是关于iOS - 从外部类引用活动故事板视图控制器的主要内容,如果未能解决你的问题,请参考以下文章
Swift 中的单元测试 | IOS 故事板 |无法转换目标 c 中定义的视图控制器类