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