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

时间:2016-01-15 22:29:02

标签: xcode swift macos cocoa

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

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

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

1 个答案:

答案 0 :(得分:0)

取消我的评论。您可以使用NSViewController的representedObject属性将任何对象传递给其他视图控制器。但这样做的一个缺点是该属性属于AnyObject?类型,因此使用Swift工作可能会很尴尬。在NSViewController子类中,您可以创建一个新属性来存储数据并为其提供正确的类型,或者您可以创建一个协议来定义计算属性,该属性用作representedObject属性的包装。