以模态方式打开另一个 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。
你有什么想法吗?
感谢您的帮助!
阿图尔
好的,我找到问题了...
我在 NSWindowController
的 windowDidLoad()
函数内部调用了代码函数 openLogin()
。问题是appDelegate的applicationDidFinishLaunching
会在windowDidLoad
函数完成后先被调用,逻辑上是正确的。
我通过 运行 模态地 window 停止了 mainThread。在应用程序完成启动过程之前,框架不喜欢这样。
我通过使用 NSNotificationCenter
并观察通知名称 NSApplicationDidFinishLaunching
解决了这个问题。我 运行 openLogin()
代码。
我有问题。 在我的 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。
你有什么想法吗?
感谢您的帮助!
阿图尔
好的,我找到问题了...
我在 NSWindowController
的 windowDidLoad()
函数内部调用了代码函数 openLogin()
。问题是appDelegate的applicationDidFinishLaunching
会在windowDidLoad
函数完成后先被调用,逻辑上是正确的。
我通过 运行 模态地 window 停止了 mainThread。在应用程序完成启动过程之前,框架不喜欢这样。
我通过使用 NSNotificationCenter
并观察通知名称 NSApplicationDidFinishLaunching
解决了这个问题。我 运行 openLogin()
代码。