我是Cocoa编程的新手。
在Xcode 6.1中,我使用storyboard创建了一个OS X应用程序。开箱即用的大纲中有一个窗口控制器。我将“Identity Inspector”中的类更改为NSWindowController
的自定义子类,其名为WindowController
。
我在@implementation
的{{1}}中写了以下代码:
WindowController
但是“输出”面板没有显示任何内容。
如果我覆盖了类中的- (instancetype)initWithWindow:(NSWindow *) window {
NSLog(@"window");
window.titleVisibility = NSWindowTitleHidden;
return [super initWithWindow:window];
}
方法,
windowDidLoad
消息显示。
doc of NSWindowController
表示- (void)windowDidLoad {
[super windowDidLoad];
self.window.titleVisibility = NSWindowTitleHidden;
NSLog("@Cool...");
}
是该类的指定初始化程序。怎么可以跳过?
在How Window Controllers Work section of Window Programming Guide中,它说:
对于简单文档 - 即只包含一个包含窗口的nib文件的文档 - 您需要直接使用
-initWithWindow:
个对象。 AppKit为您创建一个。但是,如果默认窗口控制器不足,则可以创建NSWindowController
的自定义子类。
这正是我在做的事情。但我不知道我在这里缺少什么。
谢谢!
答案 0 :(得分:0)
据我所知,你应首先使用initWithWindow调用super,然后设置标题。否则,调用super会在没有先前设置的情况下初始化窗口。 当您覆盖windowDidLoad方法时,您可以在初始化后设置标题可见性,一切正常。