高校化学2917196 views
高校生物550487 views
中学英語810057 views
数学講師2867555 views
高校国語786623 views
Computer366393 views
高校倫理1436242 views
ヒストリア286805 views
教育149163 views
高校日本史190117 views

toolbar の使い方

ナビゲーションバーにボタンやアイコンを追加するには toolbar モディファイアを使用します。編集ボタンや追加ボタンなど、画面に関連するアクションを配置できます。

toolbar の基本

toolbar モディファイアの中に ToolbarItem を配置してボタンを追加します。

struct ContentView: View {
    var body: some View {
        NavigationStack {
            Text("コンテンツ")
                .navigationTitle("ホーム")
                .toolbar {
                    Button("追加") {
                        // 追加処理
                    }
                }
        }
    }
}

単一のボタンであれば、ToolbarItem を省略してそのまま Button を配置できます。

ToolbarItem で配置を指定

ToolbarItem を使うと、ボタンの配置位置を明示的に指定できます。

.toolbar {
    ToolbarItem(placement: .topBarTrailing) {
        Button {
            // 処理
        } label: {
            Image(systemName: "plus")
        }
    }
    
    ToolbarItem(placement: .topBarLeading) {
        Button("編集") {
            // 処理
        }
    }
}
.topBarLeading

ナビゲーションバーの左側

.topBarTrailing

ナビゲーションバーの右側

.bottomBar

画面下部のツールバー

.principal

ナビゲーションバーの中央(タイトル位置)

複数のボタンを配置

struct ContentView: View {
    @State private var isEditing = false
    
    var body: some View {
        NavigationStack {
            List {
                Text("項目1")
                Text("項目2")
            }
            .navigationTitle("リスト")
            .toolbar {
                ToolbarItem(placement: .topBarTrailing) {
                    Button {
                        isEditing.toggle()
                    } label: {
                        Text(isEditing ? "完了" : "編集")
                    }
                }
                
                ToolbarItem(placement: .topBarTrailing) {
                    Button {
                        // 追加処理
                    } label: {
                        Image(systemName: "plus")
                    }
                }
            }
        }
    }
}

Menu をツールバーに配置

.toolbar {
    ToolbarItem(placement: .topBarTrailing) {
        Menu {
            Button("オプション1") { }
            Button("オプション2") { }
            Divider()
            Button("削除", role: .destructive) { }
        } label: {
            Image(systemName: "ellipsis.circle")
        }
    }
}

ボトムバー

placement: .bottomBar で画面下部にツールバーを配置できます。

struct ContentView: View {
    var body: some View {
        NavigationStack {
            Text("コンテンツ")
                .navigationTitle("ホーム")
                .toolbar {
                    ToolbarItem(placement: .bottomBar) {
                        Button {
                            // 共有
                        } label: {
                            Image(systemName: "square.and.arrow.up")
                        }
                    }
                    
                    ToolbarItem(placement: .bottomBar) {
                        Spacer()
                    }
                    
                    ToolbarItem(placement: .bottomBar) {
                        Button {
                            // 削除
                        } label: {
                            Image(systemName: "trash")
                        }
                    }
                }
        }
    }
}

ツールバーの表示/非表示

.toolbar(.hidden, for: .navigationBar)  // ナビゲーションバーを非表示
.toolbar(.hidden, for: .bottomBar)      // ボトムバーを非表示
.topBarTrailing

右上に配置。追加ボタンや設定ボタンに使用されることが多い。

.bottomBar

画面下部に配置。写真アプリのような操作パネルに適している。

toolbar はナビゲーションバーをカスタマイズする標準的な方法です。次の記事では ToolbarItem の配置オプションについてより詳しく解説します。