Cocoa Window 在 macOS Sierra 上不显示
Cocoa Window Not Showing on macOS Sierra
我有以下代码可以在我的 macOS 应用程序中显示新的 window。这是在 NSOpenPanel
的 completionHandler
之内。
let mainStoryBoard = NSStoryboard(name: NSStoryboard.Name(rawValue: "Main"), bundle: nil)
let windowController = mainStoryBoard.instantiateController(withIdentifier: NSStoryboard.SceneIdentifier(rawValue: "WindowController")) as! NSWindowController
let myController = windowController.window!.contentViewController as! ViewController
myController.imageView.image = mainImage
windowController.showWindow(self)
mainImage
定义在上面。
问题是此代码在 macOS High Sierra 上完美运行,但在 macOS Sierra 上 window 有时会显示一瞬间然后消失。
为什么这适用于 macOS High Sierra 而不是 macOS Sierra?
我能够通过修复 windowController
的范围来解决这个问题。将变量的声明移到完成处理程序上方并将其设置为 nil
以开始修复问题。
我还添加了 NSWindowDelegate
并使用函数 windowWillClose
将 windowController
设置回 nil
以确保它被正确释放。
取消选中 NSWindow 的延迟选项。
我有以下代码可以在我的 macOS 应用程序中显示新的 window。这是在 NSOpenPanel
的 completionHandler
之内。
let mainStoryBoard = NSStoryboard(name: NSStoryboard.Name(rawValue: "Main"), bundle: nil)
let windowController = mainStoryBoard.instantiateController(withIdentifier: NSStoryboard.SceneIdentifier(rawValue: "WindowController")) as! NSWindowController
let myController = windowController.window!.contentViewController as! ViewController
myController.imageView.image = mainImage
windowController.showWindow(self)
mainImage
定义在上面。
问题是此代码在 macOS High Sierra 上完美运行,但在 macOS Sierra 上 window 有时会显示一瞬间然后消失。
为什么这适用于 macOS High Sierra 而不是 macOS Sierra?
我能够通过修复 windowController
的范围来解决这个问题。将变量的声明移到完成处理程序上方并将其设置为 nil
以开始修复问题。
我还添加了 NSWindowDelegate
并使用函数 windowWillClose
将 windowController
设置回 nil
以确保它被正确释放。
取消选中 NSWindow 的延迟选项。