在this中,回答说可以通过从MainMenu.xib中删除窗口并从applicationDidFinishLaunching:
“手动”实例化窗口控制器来获得自定义的NSWindowController。但它也说:
要停止显示默认窗口,我只需将其删除即可。可能有更好的方法,但我不知道。
有更好的方法吗?如果它存在,那么更好的方法是什么?获得自己的窗口控制器是否被认为是“正常”的做法?
答案 0 :(得分:11)
为此,您通常会将NSWindowController子类化,并将File的Owner类更改为nib中的WindowController子类。
编辑:
如果您没有使用基于文档的应用程序,只想让自己的NSWindowController按需加载Nib(完全合理),那么您将从笔尖中删除窗口并实例化{ {1}}以编程方式子类,明确使用它来进行窗口加载...
NSWindowController
答案 1 :(得分:7)
我遇到了同样的问题,我想向您展示我自己的解决方案。
self.customWindowController = [[AccountWindowController alloc] initWithWindowNibName:@"CustomWindow"];
并在[self.customWindowController showWindow:nil]
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
醇>
以下是一个示例项目https://www.dropbox.com/s/ft3t7w72806tnoe/CustomWindowController.zip
答案 2 :(得分:0)
我实际上找到了另一种方式:NSWindowController
有方法-initWithWindow:
。因为App Delegate有一个属性window
,它在启动时链接到MainMenu.xib
的窗口,很容易将它链接到我的WindowController:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
MyWindowController *wincon = [[MyWindowController alloc] initWithWindow:window];
}
我尚未对此进行研究,但我没有任何错误。