我曾经多次在项目中使用过NSWindowController,感觉我对这个重要课程背后的概念有了非常粗略的把握.我想对这篇文章做的是澄清/纠正我自己的理解,并希望帮助其他学习者迈出理解的第一步.这是我发现最有用的一目了然的概念,概述和最佳实践,并且通常缺少文档.这是我对NSWindowController的看法(问题以粗体点缀):
window属性应始终链接到InterfaceBuilder中的NSWindow.[super initWithWindowNibName:]这样当你引用[mycontroller window]它时会加载nib.对于MainMenu.xib窗口的NSWC,情况也是如此,即使这是在启动时打开的吗?使用[mycontroller showWindow:nil]以显示前面的相关窗口.如果您希望窗口显示为工作表,请使用以下内容:
NSWindowController* mycontroller = [[MyController alloc] init];
[NSApp beginSheet: [mycontroller window]
modalForWindow: [self window]
modalDelegate: self
didEndSelector: @selector(didEndMySheet:returnCode:contextInfo:)
contextInfo: nil];
Run Code Online (Sandbox Code Playgroud)的didEndSelector:应该是父窗口的NSWC的方法,并且可以访问和释放"myController的"带[sheet windowController].- 要关闭窗口,请调用performClose:NSWC窗口的方法.
一些问题:
请纠正我,如果这是不好的做法,或者是完全错误的.我希望澄清我对NSWindowController的理解,所以任何添加(以最佳实践,经验,陷阱的形式)都将受到高度赞赏.
谢谢,劳里