我必须通过这样做来访问 windowController
let windowController = NSApplication.shared.mainWindow?.windowController as! WindowController
一旦我尝试在 viewDidAppear
中运行它,应用程序就会崩溃
Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
我在网上找到的解决方案是在访问 windowController 之前添加这一行:
NSApp.activate(ignoringOtherApps: true)
此行使应用程序处于事件状态。
但这种方法并没有真正解决任何问题,因为如果在我的应用加载时另一个应用成为前端应用,我的应用就会崩溃。
有什么方法可以让它工作吗?
最佳答案
您的 View Controller 正在加载并不意味着它已显示在屏幕上,甚至位于您的窗口内。很明显,您不能从 viewDidLoad
执行与窗口相关的代码。
相反,您应该注册一个 NSWindowDelegate
到您的窗口,但最佳操作过程在很大程度上取决于您要对窗口执行的操作。
关于swift - macOS:有没有办法在不崩溃的情况下访问窗口 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57732671/