【问题标题】:Multiple windows per document (Cocoa document based app)每个文档有多个窗口(基于 Cocoa 文档的应用程序)
【发布时间】:2014-08-19 12:01:47
【问题描述】:
假设我创建了一个新的 Cocoa 应用程序并在创建项目时使用Document-based application。它将有一个窗口,来自NSDocument 子类的窗口。我怎样才能使两个(或更多)窗口属于每个文档?
我创建了一个带有 .xib 文件的 NSWindowController 子类,并在其中创建了接口。我怎样才能显示这个窗口? NSWindowController 子类和NSDocument 子类之间的通信是如何工作的?
(我使用核心数据,所以它实际上是一个NSPersistentDocument 子类,但我认为这对于这个特定问题并不重要。)
【问题讨论】:
标签:
cocoa
nsdocument
nswindowcontroller
【解决方案1】:
在你的 NSDocument 中
//Lazy instantiation of window controller
- (AdditionalWindowController *)additionalWC {
if (!_additionalWC) {
_additionalWC = [[AdditionalWindowController alloc] initWithWindowNibName:@"AdditionalWindow"];
}
return _additionalWC;
}
- (IBAction)openAdditionalWindow:(id)sender {
self.additionalWC.document = self;
[self.additionalWC showWindow:self];
}
或
- (IBAction)openAdditionalWindow:(id)sender {
//addWindowController ignores redundant invocations.
[self addWindowController:self.additionalWC];
[self.additionalWC showWindow:self];
}
在 AdditionalWindowController 中,您可以随时调用
id document = [self document];
//do what ever you want e.g. somethingDidChanged | direct method call of your document