2016-12-01 7 views
0

Это сводит меня с ума. У меня есть несколько окон в моем приложении, которые я открываю через меню. Теперь я добавил новое окно, но это windowDidLoad никогда не вызывается.windowDidLoad не вызывается (снова)

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

это объявление в моем AppDelegate где я выдать

paymentWindowController.loadWindow() 

в его applicationDidFinishLaunching.

Когда мое меню нажата он вызывает

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

PaymentWindowController только леска, которая создается с помощью New File/Какао/NSWindowController:

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

XIB имеет только одно окно также с эшафота. (Я просто переименовал XIB с PaymentWindowController.xib в PaymentWindow.xib, как и я сделал это для других окон тоже.)

Все остальные окна были созданы так же, как и ожидалось. Но этот ублюдок не будет работать так, как должен.

Я также очистил проект и даже удалил производные данные.

+0

Вы пробовали удалить xib, очистить проект, а затем перестроить xib? Иногда я сталкиваюсь с такими проблемами, как пользовательские xib, а иногда перестраивает, это единственное, что работает. Наверное, не ответ, на который вы надеялись, но это стоит того! Есть другие вопросы, похожие на вас, так что я уверен, что вы тоже можете отвлечься. Я мог бы получить ответы от них, но в этот момент это было бы излишним. Вы, наверное, все это видели. Удачи! – user3353890

+0

@ user3353890 Это действительно прическа ... См. Мой собственный ответ. –

+0

Рад, что вы это поняли! – user3353890

ответ

0

Оказывается, что мне нужно добавить

override func awakeFromNib() { 
    // initialize 
} 

в мой код, который на самом деле получает называется. Не знаю, почему меня обманули windowDidLoad, который создается эшафотом, но так и не вызван.