toolbarTitleMenuは、ナビゲーションバーのタイトル部分にメニューを配置するためのモディファイアです。
これを使用することで、タイトルをクリックするとメニューが表示されるインターフェースを簡単に作成できます。
以下にその特徴と使い方を具体的なサンプルコードとともに解説します。

基本シンタックス
.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を使用することで、ナビゲーションバーのタイトル部分に簡単にメニューを配置でき、ユーザーが特定の操作をすぐに実行できるようになります。
代替手段がある機能でもあるため、アプリのデザインによって使い所を考える必要があるでしょう。興味があれば使用してみてください。

