【发布时间】:2020-01-04 01:23:50
【问题描述】:
我必须通过这样做来访问 windowController
let windowController = NSApplication.shared.mainWindow?.windowController as! WindowController
当我尝试在 viewDidAppear 中运行它时,应用程序会因此崩溃
线程 1:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)
我在网上找到的解决方案是在访问windowController之前添加这一行:
NSApp.activate(ignoringOtherApps: true)
此行使应用程序处于活动状态。
但是这种方法并不能真正解决任何问题,因为如果在我的应用加载时另一个应用成为前面的应用,我的应用就会崩溃。
有什么办法可以做到吗?
【问题讨论】:
-
(1) 如果您不想让应用程序崩溃,请不要强制解包变量。 (2) 你做错了。视图控制器在出现之前并不知道它的窗口控制器。
-
IDK 怎么说这个而不听起来像个混蛋,但从我最近看到的你的问题来看,我越来越明显地看到,你将从全面和结构化的资源中受益匪浅,比如一门课程或一本厚厚的书。我完全赞成“黑客方式”,但您似乎正在从零碎学习的失败中挣扎,而不是拥有完整的完整课程体验
-
@Alexander AppKit 有它的怪癖。感觉有些部分是由不熟悉 AppKit 的工程师从 iOS 移植过来的。
-
@Willeke 这个加上撒旦写的文档,结果浪费了很多时间和变通方法。
-
您要解决的核心问题是什么?是访问包含你的视图控制器的视图的窗口对应的窗口控制器吗?
标签: swift macos cocoa swift4 nswindowcontroller