我有问题。 在我的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。但是如果我打开登录窗口一次,我就无法关闭主窗口。我可以点击关闭按钮,但它什么也没做。
而且,我不能保证这一点,但我认为在此之后我无法关闭任何窗口。
你有什么想法吗?
感谢您的帮助!
阿图尔
答案 0 :(得分:0)
好的,我发现了这个问题......
我在openLogin()
的{{1}}函数内调用了代码函数windowDidLoad()
。问题是在NSWindowController
函数完成后首先会调用appDelegate的applicationDidFinishLaunching
,这在逻辑上是正确的。
我通过模态运行窗口来停止mainThread。在应用程序完成启动过程之前,框架不知道这样。
我使用windowDidLoad
解决了这个问题,并观察了通知名称NSNotificationCenter
。在那我运行NSApplicationDidFinishLaunching
代码。