我意识到这个问题在过去几年里至少每个月都会在 stackoverflow 上被问到死,但我仍然找不到解决方案。
我有两个源自 UITabBarController 的 ViewController。两者都是通过 Storyboard初始化的。我正在尝试从一个 VC 调用另一个 VC 的方法。当然是实例方法。
我听说过以下可能性:
1: NSNotifications
2:定义协议(protocol)并声明一个 VC 为另一个 VC 的委托(delegate)。
3: 实际上通过 RootViewController 以某种方式调用该方法。
我有通过 NSNotifications 工作的代码,但我不喜欢这个概念,并且我想了解正确的方法。我对可能性(3)最感兴趣,然后是(2)作为最后的手段。
我试图让 (2) 工作几个小时,但没有从另一个 VC 初始化委托(delegate) VC,我被难住了。 (由于 Storyboard而不是一个选项)。
(2)或(3)可能吗?怎么会这样?
如果两者都不可能,我对首选 iOS 架构有何误解?
最佳答案
是的,3 是可能的。假设您有两个 UIViewController
类,FooViewController
(选项卡索引 0)和 BarViewController
(选项卡索引 1)。假设您想从 BarViewController
调用 FooViewController
的 -(void)doFoo
方法。
在BarViewController
中,执行[(FooViewController *)[self.tabBarController.viewControllers objectAtIndex:0] doFoo]
。
关于objective-c - 从另一个 ViewController 调用一个 ViewController 的实例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13986199/