一部の Mac アプリケーションには 2 つのメイン メニューがあることを知っています。
main menu
macOS 画面の左上のメニューを意味します。
windowA が表示されると、メイン menuA が表示されます。
アプリケーションのウィンドウ (windowB という名前) をクリックする
と、menuB が menuA に置き換わります。
そして、windowA をクリックすると、メイン menuA が再表示されます。
誰かがこの動作を実装する方法を知っていますか?
各ウィンドウにメニューを関連付ける必要があります。このために、アプリケーションの MainMenu をコピーして、適切なウィンドウ コントローラ シーンに貼り付けることができます。次に、シーン内のウィンドウの接続を選択し、アイテム「メニュー」をシーンの新しいメニューにリンクします。すべてのウィンドウ コントローラー/ウィンドウに対してこれを繰り返します。
次に、コードを追加する必要があります。新しい Window クラスを作成します。
class Window : NSWindow {
override func becomeKey() {
NSLog("become2")
NSApplication.shared().mainMenu = self.menu
super.becomeKey()
}
}
次に、各ウィンドウのクラス プロパティをこの Window クラスに設定します。
その後、必要に応じてメニューを編集できます。各メニュー項目を適切なファースト レスポンダー アクションに再接続する必要があることに注意してください...
それが最善の解決策であるかどうかはわかりませんが、私にとってはうまくいきます。実際、NSWindow をこのようにサブクラス化する必要がある理由がよくわかりません...
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加