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



我是新来的Cocoa,也许这些问题是非常基本的。目前我正在开发一个mac应用程序,使用NSTabView,你可以在"app","options"one_answers"statistics"之间切换。

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

我的问题是:-这是正确的方式,有多个控制器对象的NSTabView?-当我想让AppController获得关于选项的信息时,我如何在App-和OptionsController之间进行通信?

谢谢!

当我开始Cocoa开发时,我经常遇到这类问题。我最终发现没有真正的答案。在Cocoa和Objective-C中,有很多给猫剥皮的方法,最终它真的是由你来决定的。

因为你所有的控制器都将被Nib加载,最简单的方法是在每个控制器中为它希望与之通信的其他控制器对象创建一个出口。连接接口构建器中的出口,您将设置为go。

在我看来,这是一个简单有效的解决办法。你最终会得到控制器之间的循环引用但Objective-C的Nib加载/卸载代码会为你处理所有这些

对于选项卡视图,我通常只为该窗口中的所有选项卡制作一个控制器,尽管如果使用超过3或4个选项卡,我可能会将其分开,并且每个选项卡需要大量代码来处理操作和输出。

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

最新更新