我知道一些mac應用程序有兩個主菜單。
main menu
表示macOS屏幕中的左上角菜單。如何製作macOS應用程序有兩個主菜單
當一個windowA顯示時,主菜單顯示。
當我點擊應用程序
中的某個窗口(將其命名爲windowB),並將另一個menuB替換爲menuA。
而當我點擊windowA,主菜單A重新出現。
有人知道如何實現這種行爲?
我知道一些mac應用程序有兩個主菜單。
main menu
表示macOS屏幕中的左上角菜單。如何製作macOS應用程序有兩個主菜單
當一個windowA顯示時,主菜單顯示。
當我點擊應用程序
中的某個窗口(將其命名爲windowB),並將另一個menuB替換爲menuA。
而當我點擊windowA,主菜單A重新出現。
有人知道如何實現這種行爲?
您必須將菜單關聯到每個窗口。爲此,您可以複製應用程序的MainMenu並將其粘貼到相應的窗口控制器場景中。然後選擇場景中窗口的連接,並將項目「菜單」鏈接到場景的新菜單。對所有窗口控制器/窗口重複此操作。
然後你需要添加一些代碼。創建一個新窗口類:
class Window : NSWindow {
override func becomeKey() {
NSLog("become2")
NSApplication.shared().mainMenu = self.menu
super.becomeKey()
}
}
然後將每個窗口的class屬性設置爲此Window類。
然後,您可以根據需要編輯菜單。請注意,您需要將每個菜單項重新連接到相應的第一響應者動作...
我不確定這是最佳解決方案,但它適用於我。事實上,我不明白爲什麼我需要用這種方法來劃分NSWindow ...
謝謝你的評論。 看起來不錯! 但我無法確認你的結果。 你可以上傳你的示例項目到什麼地方? – pebble8888
易於在網上找到我(使用我的名字和姓氏)我會將您的代碼發回給您。 –
我向您的Google +帳戶發送了郵件。 – pebble8888
你在想什麼應用程序?我還沒有看到任何在很長一段時間內完成的macOS應用程序。 – duskwuff
不幸的是我看到了那個應用程序。 第二主菜單和窗口在some.bundle中實現。 但我認爲事實並不涉及手段。 – pebble8888