我有一个基于Cocoa文档的应用程序。我想要"主窗口"由我的NSWindowController
子类管理。我创建了子类,并将其接口布局在一个同名的.xib文件中。我最终想要的行为与NSDocument
管理窗口的行为相同,而是由NSWindowController
管理。
首先,我该怎么办?其次,在采用这种方法时,我需要考虑一些特殊的事情,例如如何处理打开和保存?
答案 0 :(得分:5)
使用您自己的windowController实例覆盖makeWindowControllers
//Lazy instantiation of window controller
- (WindowController *)controller {
if (!_controller) {
_controller = [[WindowController alloc] initWithWindowNibName:@"Document"];
}
return _controller;
}
- (void)makeWindowControllers {
[self addWindowController:self.controller];
}
评论windowNibName& windowControllerDidLoadNib:aController方法
//- (NSString *)windowNibName
//{
// // Override returning the nib file name of the document
// // If you need to use a subclass of NSWindowController or if your document supports multiple NSWindowControllers, you should remove this method and override -makeWindowControllers instead.
// return @"Document";
//}
//- (void)windowControllerDidLoadNib:(NSWindowController *)aController
//{
// [super windowControllerDidLoadNib:aController];
// // Add any code here that needs to be executed once the windowController has loaded the document's window.
//}
将Document.xib文件所有者类从NSDocument更改为WindowController
您可以从WindowController向文档类发送消息(调用方法)。
另外请确保您理解此图表: