如何处理多个控制器类之间的可可通信

时间:2011-10-09 12:22:49

标签: objective-c cocoa model-view-controller controller nstabview

我是Cocoa的新手,也许这些问题非常基础。 目前我正在开发一个使用NSTabView的mac应用程序,您可以在其中切换“app”,“options”和“statistics”。

现在我的方法是创建三个控制器类,一个AppControler,一个OptionsController和一个StatisticsController。我在.xib文件中为它们创建了对象,并将相应的UI元素链接到正确的控制器对象。

我的问题是: - 这是正确的方法,为NSTabView提供多个控制器对象吗? - 当我希望AppController获取有关选项的信息时,如何在App-和OptionsController之间进行通信?

谢谢!

3 个答案:

答案 0 :(得分:5)

当我开始Cocoa开发时,我经常遇到这些类型的问题。我最终发现没有真正的答案。在Cocoa和Objective-C中,有很多方法可以让猫皮肤最终真正由你决定。

由于所有控制器都将加载Nib,最简单的方法是在每个控制器中为其希望与之通信的其他控制器对象创建一个插座。在界面构建器中连接出口,然后就可以了。

在我看来,这是一个简单而有效的解决方案。您将最终在控制器之间使用循环引用,但Objective-C的Nib加载/卸载代码将为您处理所有这些。

答案 1 :(得分:1)

对于选项卡视图,我通常只为该窗口中的所有选项卡创建一个控制器,但如果使用超过3或4个选项卡,我可能会拆分它,并且每个选项卡都需要大量代码处理行动和出路。

答案 2 :(得分:0)

通常,使用MVC范例。在您的情况下,如果一个控制器正在创建或修改某个设置,您可以通过某种方式在模型中设置它(可能就像某些用户默认设置一样简单),如果在其他地方使用它,则从模型中读取它。