我必须通过这样做来访问windowController
let windowController = NSApplication.shared.mainWindow?.windowController as! WindowController
一旦我尝试在viewDidAppear
内部运行此应用,此应用就会崩溃
线程1:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)
我在网上发现的解决方案是在访问windowController之前添加以下行:
NSApp.activate(ignoringOtherApps: true)
此行使应用程序处于活动状态。
但是此方法不能真正解决任何问题,因为如果在我的应用程序加载时另一个应用程序成为前端应用程序,则我的应用程序将崩溃。
有什么办法可以使这项工作成功吗?
答案 0 :(得分:1)
正在加载的视图控制器并不意味着它已经显示在屏幕上,甚至不位于窗口内。很明显,您无法从viewDidLoad
进行与窗口相关的代码。
相反,您可能应该在窗口中注册NSWindowDelegate
,但是最佳的操作方法很大程度上取决于您要对窗口执行的操作。