windowDidLoad 未调用(再次)

windowDidLoad not called (again)

这让我抓狂。我的应用程序中有几个 windows,我通过菜单打开它们。我现在添加了一个新的 window,但它的 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 只有一个 window 也来自脚手架。 (我刚刚将 XIB 从 PaymentWindowController.xib 重命名为 PaymentWindow.xib,就像我对另一个 windows 所做的那样。)

所有其他 windows 都是以相同的方式创建的,并且按预期工作。但是这个混蛋不会像它应该的那样工作。

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

原来还需要加

override func awakeFromNib() {
  // initialize
}

我的代码实际上被调用了。不知道为什么我被脚手架创建但从未被调用的 windowDidLoad 愚弄了。