这让我疯了。我的应用程序中有几个窗口,我通过菜单打开。我现在添加了一个新窗口,但它永远不会调用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
,就像我为其他窗口所做的那样。)
所有其他窗口都以相同的方式创建并按预期工作。但是这个混蛋将无法正常工作。
我也清理了项目,甚至删除了派生数据。
答案 0 :(得分:0)
事实证明我需要添加
override func awakeFromNib() {
// initialize
}
到我实际被调用的代码。不知道为什么我被windowDidLoad
所愚弄,这是由脚手架创建但从未被调用过。