Xcode 如何在视图控制器之间共享模型对象?

Xcode 如何在视图控制器之间共享模型对象?,xcode,swift,macos,cocoa,Xcode,Swift,Macos,Cocoa,我创建了一个基本的OSX应用程序,它带有一个故事板,可以在自定义视图中画圆圈。主窗口包含一个NSSplitViewController,其中包含两个子视图(内容和侧栏,如Apple页面或数字)。内容视图是用于绘制圆的NSView的自定义子类,而侧栏视图包含标准控件。两者都应该绑定到一个模型对象,该模型对象具有诸如圆数、直径等属性 据我所知,这两个子视图在任何情况下都有自己的控制器。如何拥有两个控制器都引用的数据模型对象(我们称之为圆圈),以便我可以连接键值观察,以便在更改控件值时重新绘制自定义视

我创建了一个基本的OSX应用程序,它带有一个故事板,可以在自定义视图中画圆圈。主窗口包含一个
NSSplitViewController
,其中包含两个子视图(内容和侧栏,如Apple页面或数字)。内容视图是用于绘制圆的
NSView
的自定义子类,而侧栏视图包含标准控件。两者都应该绑定到一个模型对象,该模型对象具有诸如圆数、直径等属性

据我所知,这两个子视图在任何情况下都有自己的控制器。如何拥有两个控制器都引用的数据模型对象(我们称之为
圆圈
),以便我可以连接键值观察,以便在更改控件值时重新绘制自定义视图


我的想法是在公共父控制器中创建模型对象并将其传递给子控制器,但如何在Xcode 7.2的Interface Builder中设置它?

处理我的注释。您可以使用NSViewController的
representedObject
属性将任何对象传递给其他视图控制器。不过,这样做的一个缺点是,属性的类型是
AnyObject?
,因此使用Swift时可能会很尴尬。在NSViewController子类中,可以创建一个新属性来存储数据并为其指定正确的类型,也可以创建一个协议来定义计算属性,该属性用作
representedObject
属性的包装。

处理我的注释。您可以使用NSViewController的
representedObject
属性将任何对象传递给其他视图控制器。不过,这样做的一个缺点是,属性的类型是
AnyObject?
,因此使用Swift时可能会很尴尬。在NSViewController子类中,您可以创建一个新属性来存储数据并为其指定正确的类型,也可以创建一个协议来定义作为
representedObject
属性包装器的计算属性。

您可以将它传递给每个子视图控制器的representedObject,只需观察一下,或者,你也可以自己创造财产,并在那里观察。不确定为什么必须在IB中执行此操作?@LucasDerraugh谢谢,我还不知道
representedObject
。我设置子控制器的
representedObject
属性。您是否介意将其作为答案发布(我会接受)?您可以将其传递给每个子视图控制器的representedObject,然后观察它,或者您可以始终创建自己的属性并在那里观察它。不确定为什么必须在IB中执行此操作?@LucasDerraugh谢谢,我还不知道
representedObject
。我设置子控制器的
representedObject
属性。你介意把它贴出来作为答复吗(我接受)?