【发布时间】:2015-03-12 12:44:33
【问题描述】:
我是 Cocoa 编程的新手。
在 Xcode 6.1 中,我使用情节提要创建了一个 OS X 应用程序。开箱即用的大纲中有一个窗口控制器。我将其在“Identity Inspector”中的类更改为NSWindowController 的自定义子类,命名为WindowController。
我在WindowController的@implementation中写了如下代码:
- (instancetype)initWithWindow:(NSWindow *) window {
NSLog(@"window");
window.titleVisibility = NSWindowTitleHidden;
return [super initWithWindow:window];
}
但是输出面板什么也没显示。
如果我覆盖类中的windowDidLoad 方法,
- (void)windowDidLoad {
[super windowDidLoad];
self.window.titleVisibility = NSWindowTitleHidden;
NSLog("@Cool...");
}
消息出现。
doc of NSWindowController 表示-initWithWindow: 是该类的指定初始化器。怎么能跳过?
在How Window Controllers Work section of Window Programming Guide 中,它说:
对于简单文档(即只有一个包含窗口的 nib 文件的文档),您几乎不需要直接使用
NSWindowController对象。 AppKit 为您创建了一个。但是,如果默认的窗口控制器不够用,可以创建NSWindowController的自定义子类。
这正是我正在做的。但我不知道我在这里错过了什么。
谢谢!
【问题讨论】:
-
可能与故事板的使用有关,您如何设置/实例化窗口控制器?仅在情节提要中或代码中?
-
嗨,@Volker。感谢你的回复。我只是使用故事板。我不明白为什么
initWithWindow:被绕过了。
标签: objective-c macos cocoa