模态打开另一个窗口后无法关闭窗口

时间:2016-10-06 19:12:14

标签: cocoa swift3 nswindow nswindowcontroller

我有问题。 在我的mac osx应用程序中,我有一个主窗口。这个窗口是初始的。我正在使用故事板。 但有时用户需要再次登录应用程序。如果是这种情况(例如当会话结束时),我将使用以下代码以模态方式打开一个新的小窗口:

private func openLogin() {
    loginController = self.storyboard?.instantiateController(withIdentifier: "LoginController") as? LoginWindowController
    guard let window = loginController?.window else {
        return false
    }
    NSApp.runModal(for: window)
}

在我打开此窗口并再次关闭后,我永远无法关闭主窗口。如果登录窗口从未打开,则没有问题,我可以关闭MainWindow。但是如果我打开登录窗口一次,我就无法关闭主窗口。我可以点击关闭按钮,但它什么也没做。

而且,我不能保证这一点,但我认为在此之后我无法关闭任何窗口。

你有什么想法吗?

感谢您的帮助!

阿图尔

1 个答案:

答案 0 :(得分:0)

好的,我发现了这个问题......

我在openLogin()的{​​{1}}函数内调用了代码函数windowDidLoad()。问题是在NSWindowController函数完成后首先会调用appDelegate的applicationDidFinishLaunching,这在逻辑上是正确的。

我通过模态运行窗口来停止mainThread。在应用程序完成启动过程之前,框架不知道这样。

我使用windowDidLoad解决了这个问题,并观察了通知名称NSNotificationCenter。在那我运行NSApplicationDidFinishLaunching代码。