在各种视图/ nib之间共享用于绑定的对象(特别是NSDocument)

时间:2011-08-15 20:50:49

标签: objective-c cocoa nsdocument nswindowcontroller nsviewcontroller

我正在使用Xcode 4为OSX(Lion)编写应用程序。

用这一块打了一堵墙,互联网迄今为止证明并不是特别有用。

我定义了一个文档,以及MainMenu.xib和一个文档窗口;文档窗口当然是在加载/创建文档时创建的内容,因此可以访问相关数据。

我想在这个项目中尽可能多地利用Cocoa Bindings,所以我的问题是:

如果我创建另一个View(让我们说一个带有链接Nib的NSViewController);如何允许它访问文档的数据?

我尝试为文档类添加#import,但是当我将文档类的#import添加到视图控制器(创建它)时会出现问题 - 我收到未知类型的编译错误。

我也走了传递临时对象的路线(甚至在创建视图控制器后访问getter / setter);肯定有一个更好,更清洁的方式吗?

应用程序只有一个NSWindowController(默认),就是它,它来自基于XCode非核心数据文档的应用程序模板。

感谢您的帮助, 奇

1 个答案:

答案 0 :(得分:1)

如果要绑定到其他类,则需要引用某种类型的文档。由于您已使用NSViewController,因此可以将representedObject的{​​{1}}设置为您的文档。或者,您可以继承NSViewController并创建自定义属性以引用该文档。

NSViewController

在Interface Builder中,您可以使用YourViewController* controller = [[YourViewController alloc] initWithNibName:@"YourNib" bundle:nil]; [controller setRepresentedObject:yourDocument]; 的关键路径将视图控制器笔尖中的对象绑定到文件的所有者