りんご192546 views
いろは2986023 views
高校倫理1433119 views
高校生物549842 views
小学理科717236 views
中学英語808712 views
教育148875 views
中学理科1626207 views
中学社会667106 views
LaTeX957300 views
Help
Tools

English

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 の配置オプションについてより詳しく解説します。