Cocoa 从另一个nib文件访问一个nib文件上的对象

Cocoa 从另一个nib文件访问一个nib文件上的对象,cocoa,macos,interface-builder,Cocoa,Macos,Interface Builder,我有两个nib文件-Main.nib和Preference.nib 在Main.nib文件中,我有一个NSView类的实例。其窗口有一个nspoupbutton,单击该按钮可显示一个菜单。在菜单中,我有“显示首选项”菜单项。 单击菜单项将显示包含颜色井项的首选项面板。 单击“颜色井”时,将显示一个颜色面板以选择颜色。 问题是如何将该颜色应用于主应用程序窗口 我的首选项面板窗口位于preference.nib文件中。 所以问题是从另一个Nib窗口访问NSView 有没有一种方法可以让我在首选项面板

我有两个nib文件-
Main.nib
Preference.nib
Main.nib
文件中,我有一个
NSView
类的实例。其窗口有一个
nspoupbutton
,单击该按钮可显示一个菜单。在菜单中,我有“显示首选项”菜单项。 单击菜单项将显示包含颜色井项的首选项面板。 单击“颜色井”时,将显示一个颜色面板以选择颜色。 问题是如何将该颜色应用于主应用程序窗口

我的首选项面板窗口位于preference.nib文件中。 所以问题是从另一个Nib窗口访问
NSView


有没有一种方法可以让我在首选项面板和我的主应用程序窗口之间建立连接(
NSView

您的想法是错误的
NSView
NSWindow
是模型-视图-控制器模式中的视图对象,不应用于保存应用程序数据。在首选项面板中选择的颜色是应用程序数据,应存储在适当的模型对象中

例如,可以使用绑定将颜色很好地绑定到
NSUserDefaultsController
对象以存储该数据(假设这是应用程序范围的设置)。您没有明确说明主窗口中使用的颜色,但如果使用该颜色的对象是绑定感知的,则可以将该对象绑定到
NSUserDefaultsController
上的相同值,这样就完成了

否则,您可以响应颜色井的操作消息,将颜色存储在适当的位置,然后使用
NSNotificationCenter
发送通知,告知其他对象颜色已更改。当通知消息的值更改时,您需要注册任何需要采取操作的对象

以下是一些资源:

  • 这里有一个模式可以解释Cocoa程序是如何构造的
  • 这是Cocoa绑定工作原理的一个示例
  • 这里有一个