【toolbarTitleMenuの使い方】タイトルにメニューを追加する方法

この記事は約5分で読めます。

toolbarTitleMenuは、ナビゲーションバーのタイトル部分にメニューを配置するためのモディファイアです。
これを使用することで、タイトルをクリックするとメニューが表示されるインターフェースを簡単に作成できます。

  • iOS:16.0以上
  • XCode(当サイトの環境):15.0.1

以下にその特徴と使い方を具体的なサンプルコードとともに解説します。

基本シンタックス

.toolbarTitleMenu<C>(content: () -> C)
  • content: メニューの内容を定義するクロージャ。ここにメニューアイテムを追加します。

特徴

ナビゲーションバーのタイトル部分にメニューを配置することで、ユーザーが特定の操作をすぐに実行できるようにします。
また、メニューの内容を自由にカスタマイズできるため、様々な用途に対応可能です。

    サンプルコード

    以下に、toolbarTitleMenuを使った具体的なサンプルコードを示します。
    このコードでは、ナビゲーションバーのタイトル部分に「タイトル」というタイトルを設定し、クリックすると複数のメニューアイテムが表示されます。

    import SwiftUI
    
    struct ToolbarTitleMenuSmp: View {
        var body: some View {
            NavigationStack {
                List {
                    ForEach(1..<50) { item in
                        Text("ITEM \(item)")
                    }
                }
                .navigationTitle("タイトル")
                // タイトルがインラインモードで表示されていないとメニューも表示されない
                .navigationBarTitleDisplayMode(.inline)
    
                // タイトルメニューのボタン
                .toolbarTitleMenu {
                    Button(action: {
                        print("home tapped")
                    }) {
                        Text("ホーム")
                        Image(systemName: "house")
                    }
                    Button(action: {
                        print("setting tapped")
                    }) {
                        Text("設定")
                        Image(systemName: "gearshape")
                    }
                    Button("オプション 1") {
                        print("Option 1 selected")
                    }
                    Button("オプション 2") {
                        print("Option 2 selected")
                    }
                    Button("オプション 3") {
                        print("Option 3 selected")
                    }
                }
                
                //ダークモードの配色を設定
                .toolbarColorScheme(.dark, for: .navigationBar, .tabBar)
                .toolbarBackground(.visible, for: .navigationBar, .bottomBar)
            }
        }
    }

    サンプルコードの動作

    toolbarTitleMenu仕様における注意点

    タイトルがインラインモードで表示されていないと、メニューも表示されません。

    上記のサンプルコードでは、navigationBarTitleDisplayModeを使用してタイトルをインラインモードで表示しているため、常時タイトルメニューを操作することができますが、次に示すように通常時のタイトル表示ではメニューが表示されません。

    また、リストをスクロールした時などもタイトルがインライン表示となり、タイトルメニューを操作することができます。

    通常時のタイトル表示
    リストをスクロールしたときなどのインライン表示

    まとめ

    toolbarTitleMenuを使用することで、ナビゲーションバーのタイトル部分に簡単にメニューを配置でき、ユーザーが特定の操作をすぐに実行できるようになります。

    代替手段がある機能でもあるため、アプリのデザインによって使い所を考える必要があるでしょう。興味があれば使用してみてください。

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