我意识到这个问题已被要求死亡,至少每月一次在stackoverflow上过去几年,但我仍然无法找到解决方案。
我有两个源自UITabBarController的ViewControllers。两者都通过故事板初始化。我试图从另一个VC调用一个VC的方法。当然是实例方法。
我听说过以下几种可能性:
1: NSNotifications
2:定义协议并将一个VC声明为另一个VC的委托。
3:实际上通过RootViewController以某种方式调用该方法。
我有通过NSNotifications工作的代码,但我不喜欢这个概念,我想了解正确的方法。我最感兴趣的是可能性(3),然后(2)作为最后的手段。
我试图让(2)工作几个小时,但是没有从另一个VC初始化委托VC,我很难过。 (由于故事板,不是一个选项)。
是(2)还是(3)可能吗?怎么样?
如果两者都不可能,我对首选iOS架构的误解是什么?
答案 0 :(得分:1)
是的,3是可能的。假设您有两个UIViewController
类,FooViewController
(标签索引0)和BarViewController
(标签索引1)。我们假设您要从FooViewController
调用-(void)doFoo
的{{1}}方法。
在BarViewController
中,执行BarViewController
。
答案 1 :(得分:0)
我认为使用NSNOtification并不总是做出类似事情的错误方法。我也为这个概念而努力。
对于这个Senario,我认为通知是可以的:
原因是,控制器A的更新不是由于“点击提交”。它会刷新,因为创建了Book。这是关于数据的东西。某种程度上“创建一本书”是应用程序中的一个关键事件。
对于另一个Senario,它是不行的
这只是我自己的看法。