Cocoa应用程序菜单栏IBOutlet动作至NSViewController-Swift

Cocoa应用程序菜单栏IBOutlet动作至NSViewController-Swift,swift,cocoa,menubar,nsviewcontroller,Swift,Cocoa,Menubar,Nsviewcontroller,我已成功将MyNSViewController NSButton操作出口与应用程序菜单栏菜单项链接。以下是我遵循的步骤 将现有按钮操作参数类型从NSButton更改为AnyObject 在ApplicationScene上的FirstResponder旁边添加NSObject 在identity inspector上将添加对象的类名更改为MyNSViewController 在弹出菜单上,右键单击添加的对象Ctrl+将IBoutlet操作拖动到菜单项以链接它们 这很有效。当我单击menuitem

我已成功将MyNSViewController NSButton操作出口与应用程序菜单栏菜单项链接。以下是我遵循的步骤

将现有按钮操作参数类型从NSButton更改为AnyObject

在ApplicationScene上的FirstResponder旁边添加NSObject

在identity inspector上将添加对象的类名更改为MyNSViewController

在弹出菜单上,右键单击添加的对象Ctrl+将IBoutlet操作拖动到菜单项以链接它们

这很有效。当我单击menuitem并成功访问NSWorkspace.sharedWorkspace().openURL(检查URL)时,我获得了对操作的控制。但当任何UI对象需要更新时,应用程序都会停止。我尝试了dispatch_async(dispatch_get_main_queue(),{但都没有用

MyNSViewController加载到ViewController中的占位符视图,默认情况下,该占位符视图与WindowController应用程序条目链接


我在谷歌上搜索过,但谷歌上的内容要少得多。每个人都在解释如何链接AppDelegate。但通过在那里获取事件,我将如何调用MyNSViewController中的方法。我在MyNSViewController上获取事件。请简要说明我缺少的内容或分享一些教程。

将菜单项操作连接到第一响应者。查看控制器位于响应程序链中,将获取消息。我已经在ViewController上获取消息,并且能够执行其中的方法。但是当要操作UI控件(如NSButton set image from bundle)时,它崩溃了,说exc_bad_指令(code=exc_i386_invop subcode=0x0)您的ViewController未直接绑定到应用程序代理。您可以有多个窗口和多个视图控制器,因此它们不能全部响应菜单项操作。您需要将菜单连接到appDelegate,并让appDelegate将相关消息传递到当前窗口,然后传递到视图控件ler.我希望这有帮助。将菜单项action连接到第一个响应程序。视图控制器位于响应程序链中,将获取消息。我已经在视图控制器上获取消息,并且能够执行其中的方法。但是当操作UI控件(如NSButton set image from bundle)时,它崩溃了,说exc_bad_指令n(代码=exc\U i386\U invop子代码=0x0)您的ViewController未直接绑定到应用程序代理。您可以有多个窗口和多个视图控制器,因此它们不能全部响应菜单项操作。您需要将菜单连接到appDelegate,并让appDelegate将相关消息传递到当前窗口,然后传递到视图控件我希望这有帮助。