我正在尝试从自己的nib文件创建一个NSWindow,但它似乎比我预期的更难......
NSWindowController提供了一个init(windowNibName: String?)
方法,可以被子类覆盖。似乎无法在不覆盖它的情况下调用基类“init(windowNibName: String?)
”(编译器显示错误消息,表明没有采用该String参数的初始化程序)。
但是当覆盖此init(...)
方法时,您必须遵循初始化链,这会强制您调用指定的初始值设定项。此指定的初始值设定项为init(window: NSWindow!)
。
这就是我现在被困住的地方......似乎我有来创建一个NSWindow对象(不知何故)以便将它传递给指定的初始化程序。 但我不知道如何从nib文件创建NSWindow。
有人有任何线索吗?
答案 0 :(得分:6)
这是我的错误。
创建自己的init方法并自己加载xib文件,如下所示:
class MyWindowController: NSWindowController {
init() {
super.init(window: nil)
/* Load window from xib file */
NSBundle.mainBundle().loadNibNamed("MyWindow", owner: self, topLevelObjects: nil)
}
}
答案 1 :(得分:4)
我发现了我的错误......
我将自己的WindowController作为“文件所有者”放入NIB文件中,但忘记将其“窗口”属性链接到NIB中的窗口(在Interface Builder中)。
现在它可以正常工作。
谢谢@juniperi