2017-06-21 24 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

相關問題