在以前版本的 mac os 上,一切都很好,加载窗口,下面的代码工作正常。但是随着第一次正式发布,Big Sur MainWindow 总是 nil
func applicationDidFinishLaunching(_ aNotification: Notification) {
self.applicationCoordinator.setupApplicationLanguage(language: .en)
windowViewController = MainWindowController()
windowViewController?.windowDelegate = self
windowViewController?.window?.makeKeyAndOrderFront(self)
windowViewController?.showWindow(self)
NSApp.activate(ignoringOtherApps: true)
NSApplication.shared.mainWindow?.title = ""
NSApplication.shared.mainWindow?.appearance = NSAppearance(named: .aqua)
NSApplication.shared.mainWindow?.styleMask.remove(NSWindow.StyleMask.resizable)
self.applicationCoordinator.setupApplicationWindowMinSize()
self.applicationCoordinator.loadInitialCoordinator(with: self.applicationCoordinator)
}
NSApplication.shared.windows 内部包含 MainWindowController 窗口,但 NSApplication.shared.mainWindow 将为 nil。
此错误的解决方案: 以前可以在应用程序激活之前更新 NSApplication.shared.mainWindow。但从 Big Sur 开始,它已被修复,当应用程序变为活动状态时,NSApplication.shared.mainWindow 将设置为其窗口堆栈中的第一个窗口