2017-06-21 50 views
1

我知道一些mac应用程序有两个主菜单。
main menu表示macOS屏幕中的左上角菜单。如何制作macOS应用程序有两个主菜单

当一个windowA显示时,主菜单显示。
当我点击应用程序
中的某个窗口(将其命名为windowB),并将另一个menuB替换为menuA。
而当我点击windowA,主菜单A重新出现。

有人知道如何实现这种行为?

+0

你在想什么应用程序?我还没有看到任何在很长一段时间内完成的macOS应用程序。 – duskwuff

+0

不幸的是我看到了那个应用程序。 第二主菜单和窗口在some.bundle中实现。 但我认为事实并不涉及手段。 – pebble8888

回答

1

您必须将菜单关联到每个窗口。为此,您可以复制应用程序的MainMenu并将其粘贴到相应的窗口控制器场景中。然后选择场景中窗口的连接,并将项目“菜单”链接到场景的新菜单。对所有窗口控制器/窗口重复此操作。

然后你需要添加一些代码。创建一个新窗口类:

class Window : NSWindow { 
    override func becomeKey() { 
     NSLog("become2") 
     NSApplication.shared().mainMenu = self.menu 
     super.becomeKey() 
    } 
} 

然后将每个窗口的class属性设置为此Window类。

然后,您可以根据需要编辑菜单。请注意,您需要将每个菜单项重新连接到相应的第一响应者动作...

我不确定这是最佳解决方案,但它适用于我。事实上,我不明白为什么我需要用这种方法来划分NSWindow ...

+0

谢谢你的评论。 看起来不错! 但我无法确认你的结果。 你可以上传你的示例项目到什么地方? – pebble8888

+0

易于在网上找到我(使用我的名字和姓氏)我会将您的代码发回给您。 –

+0

我向您的Google +帐户发送了邮件。 – pebble8888

相关问题