2017-06-21 5 views
1

私はいくつかのMacアプリケーションを知っている2つのメインメニューがあります。
main menuは、macOS画面の左上のメニューを意味します。MacOSアプリケーションを作る方法2つのメインメニューを持っている

ウィンドウAを表示すると、メインメニューが表示されます。
アプリケーション内のあるウィンドウ(名前はウィンドウB)をクリックすると、
となり、別のメニューBがmenuAに置き換えられます。
そしてwindowAをクリックすると、メインメニューが再び表示されます。

誰かがこの動作を実装する方法を知っていますか?

+0

どのようなアプリケーションについて考えていますか?私は非常に長い間それをしたmacOSアプリケーションは見ていません。 – duskwuff

+0

残念ながら私はそのアプリを見ました。 2番目のメインメニューとウィンドウはsome.bundleに実装されています。 しかし、私はその事実が手段に関係していないと思う。 – pebble8888

答えて

1

各ウィンドウにメニューを関連付ける必要があります。このために、アプリケーションのMainMenuをコピーし、それを適切なWindow Controller Sceneに貼り付けることができます。次にシーン内のウィンドウの接続を選択し、項目「メニュー」をシーンの新しいメニューにリンクします。すべてのウィンドウコントローラ/ウィンドウに対してこれを繰り返します。

次に、コードを追加する必要があります。新しいウィンドウクラスを作成します。

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

このクラスのクラスプロパティをこのWindowクラスに設定します。

必要に応じてメニューを編集できます。それぞれのメニュー項目を適切なファーストレスポンダアクションに再接続する必要があることに注意してください。

私はそれが最善の解決策であるとは確信していませんが、うまくいきます。実際、私はなぜこのようにNSWindowをサブクラス化する必要があるのか​​理解できません。

+0

ご意見ありがとうございます。 いいですね! あなたの結果を確認することはできません。 サンプルプロジェクトをどこかにアップロードできますか? – pebble8888

+0

ウェブ上で簡単に私を見つけることができます(私の名字を使用してください)私はコードを送り返します。 –

+0

Google +のアカウントにメッセージを送信しました。 – pebble8888

関連する問題