在我的文档应用程序中,我将我在 MyDocument.xib 中引用的 NSArrayController 子类化,将其内容绑定到File 的 Owner.entries。
entries 是一个 NSArray,我以这种方式公开为 MyDocument 类的属性:
@interface MyDocument : NSDocument {
NSArray *entries;
}
-(NSArray *)entries;
-(void)setEntries:(NSArray *)newEntries;
@end
这工作得很好。好的。
现在我设计了另一个 .xib,CSVEntries.xib,我通过 NSMenuItem 通过 NSWindowController 打开它,并且再次运行顺利。
我不知道如何让这个新窗口在 NSTableView 中显示 MyDocument.entries 实例的内容。
我已经尝试了很多东西,但问题基本上是我放在 CSVEntries.xib 上的任何 NSArrayController 都不能绑定到 MyDocument.entries: CVSEntries.xib 文件的所有者指的是其他东西而不是 MyDocument(我猜这是合乎逻辑的)。
我还尝试将 NSArray 实例的副本添加到打开 CVSEntries.xib 的 NSWindowController 中,但是由于仅在用户单击菜单时才实例化窗口,因此我最终得到了一个空数组。
我在互联网上搜索但找不到合适的答案,我只是想找出解决问题的正确方法,我确信两个窗口可以相互通信,也许访问它们的共同父级(NSApplication 实例)?
所有新手问题,我知道:)
更新
我想我知道在哪里看,但仍然不知道如何看。我想我必须确保第二个窗口文件的所有者是 MyDocument 但在 NSWindowController initWithWindowNibName:owner: 我不明白如何将 MyDocument 实例指定为所有者。仅在 xib 文件 File's Owner 中指定它似乎还不够。
更新 2
嗯...我开始认为我需要有两个 NSWindowController 实例,它们都由我的 NSDocument 子类(默认为 MyDocument)实例化。有了这些,可能两个 NSWindowController 都可以访问 MyDocument.entries NSArray,并且两个 windows xib 文件将能够绑定到 File 的 Owner.entries。
有人可以证实这一点吗?谢谢。