以模态方式打开另一个 window 后无法关闭 Window

Cannot close Window after opening another window modally

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

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

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

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

你有什么想法吗?

感谢您的帮助!

阿图尔

好的,我找到问题了...

我在 NSWindowControllerwindowDidLoad() 函数内部调用了代码函数 openLogin()。问题是appDelegate的applicationDidFinishLaunching会在windowDidLoad函数完成后先被调用,逻辑上是正确的。

我通过 运行 模态地 window 停止了 mainThread。在应用程序完成启动过程之前,框架不喜欢这样。

我通过使用 NSNotificationCenter 并观察通知名称 NSApplicationDidFinishLaunching 解决了这个问题。我 运行 openLogin() 代码。