我最近开始为iPhone开发,到目前为止我的表现相当不错,但这种基本模式我似乎无法获得。
说,我有一个带有两个视图的TabBar和一个自定义委托协议,因此我的结构如下:
现在我想实现以下目的:我在FirstView.xib中放置了一个按钮,我想要它调用的IBAction(在FirstViewController ofc。中)向SecondViewController发送消息([self.delegate tellSecondViewContrToSayHi] )并调用另一种方法,只需将日志打印到控制台,说“嗨,我在这里。”
到目前为止,我知道理论上需要做什么:
现在,nr.4是问题的所在。我该如何将委托链接到另一个viewController?我的意思是我不是那个实例化视图的人,因为tabBar有点对我这样做,...任何建议?或者我是否太累了注意到我在某处做过一件非常愚蠢的事情?
理论上同样的问题也适用于目标:行动:事物,......我的意思是,我如何定义目标?
非常感谢, 芥末
答案 0 :(得分:2)
您有正确的想法,假设您希望通过该委托协议在这些控制器之间进行相对紧密的耦合。
由于在设置了委托属性之前,两个控制器都不知道另一个控制器,因此你需要有一些引用它们的对象连接该关系。在您的情况下,可能是可以创建两个控制器的应用程序委托,将一个设置为另一个的委托,并将它们传递给标签栏控制器。
您可能真正想要的是让app delegate为两个控制器提供对某个共享模型对象的引用。当您点击按钮时,您的FirstViewController可以更新该模型,并且您的SecondViewController可以观察模型的更改以更新其显示(或者仅在基于当前模型状态显示时更新其视图)。这样你的控制器就不需要彼此了解任何事情了。