В моем приложении несколько оконных контроллеров, но я хочу, чтобы только некоторые оконные контроллеры выходили из приложения после закрытия последнего окна.Я попытался добавить applicationShouldTerminateAfterLastWindowClosed(_:)
в AppDelegate.swift
файл:
func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
return true
}
Но похоже, что это работает для всего приложения, чтобы выйти из приложения после закрытия последнего окна.
Причина, почемуЯ хочу добиться этого, чтобы некоторые из моих переходов в моем приложении включали закрытие окна и отображение нового окна, используя self.view.window!.close()
или NSApp.mainWindow!.close()
, после вызова этих функций приложение немедленно закрывается.Поэтому я не хочу, чтобы applicationShouldTerminateAfterLastWindowClosed(_:)
применялся ко всему приложению.
Я пытался использовать exampleWindowController.showWindow(self)
перед вызовом функций, чтобы закрыть предыдущее окно, но, тем не менее, это не сработало, оновсе еще прервал мое приложение.Я также попытался использовать windowShouldClose(_:)
из NSWindowDelegate
, чтобы сообщить приложению о завершении работы после закрытия окна для определенного оконного контроллера (возможно, у меня возникло недопонимание относительно правильного использования этой функции):
extension exampleWindowController: NSWindowDelegate {
func windowWillClose(_ notification: Notification) {
NSApp.terminate(self)
}
}
Но все же, ничего не произошло ...
Поэтому я спрашиваю, есть ли способ достичь этого?
Если нет, то я спрашиваю, есть ли способ сказать, что приложение невыйти в определенное время, когда я программно закрываю окно?
PS Я использую Xcode 10 с Swift 4.2 Cocoa API