メニューバー常駐化

例1:

例2:

MenuBarContentView のボタンに自分の非表示、再表示させる機能を持たせる

MenuBarContentViewのポップオーバーを閉じるには、NSPopoverの参照が必要です。いくつか方法がありますが、最もシンプルな方法を紹介しますね:

方法1: @Environmentを使う(推奨)

方法2: MenuBarManagerにメソッドを追加

より細かい制御が必要な場合は、MenuBarManagerに閉じるメソッドを追加:

そしてMenuBarContentViewで:

方法3: ポップオーバー自体をEnvironmentで渡す

より高度な制御が必要な場合:

おすすめ

方法1の@Environment(\.dismiss)が最もシンプルで、SwiftUIの標準的なやり方です。ほとんどのケースではこれで十分です!

再表示するには

再表示する方法ですが、実はポップオーバーは自動的に再表示できます

再表示の方法

ポップオーバーを閉じた後、メニューバーのアイコンをもう一度クリックすれば再表示されます。これはtogglePopover()メソッドで既に実装されています。

もしプログラム的に再表示したい場合は、以下のようにします:

方法1: MenuBarManagerにメソッドを追加

使用例

補足: ポップオーバーの表示状態を確認

これで、ポップオーバーが表示されているかどうかを確認できます。

通常はユーザーがメニューバーアイコンをクリックして再表示するのが自然な動作ですが、特定の処理後に自動で再表示したい場合はopenPopover()メソッドを使ってください!

コメント

タイトルとURLをコピーしました