windowDidLoad未被调用(再次)

时间:2016-12-01 21:57:41

标签: swift nswindowcontroller

这让我疯了。我的应用程序中有几个窗口,我通过菜单打开。我现在添加了一个新窗口,但它永远不会调用windowDidLoad

fileprivate let paymentWindowController = PaymentWindowController(windowNibName:"PaymentWindow")

是我AppDelegate中发出

的声明
paymentWindowController.loadWindow()

applicationDidFinishLaunching

点击我的菜单后,它会调用

@IBAction func showPayments(_ sender: Any) {
  paymentWindowController.window!.makeKeyAndOrderFront(self)
}

PaymentWindowController只是通过New File / Cocoa / NSWindowController创建的脚手架:

class PaymentWindowController: NSWindowController {
  override func windowDidLoad() {
    super.windowDidLoad()
    print("never been here")
  }
}

XIB只有来自脚手架的单一窗口。 (我只是将XIB从PaymentWindowController.xib重命名为PaymentWindow.xib,就像我为其他窗口所做的那样。)

所有其他窗口都以相同的方式创建并按预期工作。但是这个混蛋将无法正常工作。

我也清理了项目,甚至删除了派生数据。

1 个答案:

答案 0 :(得分:0)

事实证明我需要添加

override func awakeFromNib() {
  // initialize
}

到我实际被调用的代码。不知道为什么我被windowDidLoad所愚弄,这是由脚手架创建但从未被调用过。