从笔尖名称创建NSWindow

时间:2014-06-13 13:03:46

标签: cocoa swift

我正在尝试从自己的nib文件创建一个NSWindow,但它似乎比我预期的更难......

NSWindowController提供了一个init(windowNibName: String?)方法,可以被子类覆盖。似乎无法在不覆盖它的情况下调用基类“init(windowNibName: String?)”(编译器显示错误消息,表明没有采用该String参数的初始化程序)。

但是当覆盖此init(...)方法时,您必须遵循初始化链,这会强制您调用指定的初始值设定项。此指定的初始值设定项为init(window: NSWindow!)

这就是我现在被困住的地方......似乎我来创建一个NSWindow对象(不知何故)以便将它传递给指定的初始化程序。 但我不知道如何从nib文件创建NSWindow。

有人有任何线索吗?

2 个答案:

答案 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