【SwiftUI】ビューコントローラー:DisclosureGroup

環境

Xcode16.1
Swift:6
iOS16

基本

概要

DisclosureGroupとは
※iOS14から
タップすると内容が展開される形式で、Formや設定画面、長いリストなどに適している。

パラメータ

label:ヘッダー部分の内容
isExpanded:展開状態を制御する状態変数を指定(省略可能)

DisclosureGroup("ラベル", isExpanded: $isFirstGroupExpanded) {
    // 表示するビュー
    Text("サンプル")
}

DisclosureGroup(isExpanded: $isFirstGroupExpanded) {
    // 表示するビュー
    Text("サンプル")
} label: {
    Text("ラベル")
}

import SwiftUI

struct ContentView: View {
    @State private var isGroupExpanded = false

    var body: some View {
        List {
            DisclosureGroup("セクション1") {
                Text("最初のセクションの詳細情報です。")
            }

            // ラベルをカスタマイズ
            DisclosureGroup(isExpanded: $isGroupExpanded) {
                Text("2番目のセクションの詳細情報です。")
            } label: {
                HStack {
                    Image(systemName: "info.circle.fill")
                        .foregroundColor(.blue)
                    Text("セクション2")
                        .font(.headline)
                }
            }
        }
    }
}

#Preview {
    ContentView()
}

複数のネスト

import SwiftUI

struct ContentView: View {

    var body: some View {
        List {
            DisclosureGroup("動物") {
                DisclosureGroup("犬") {
                    Text("チワワ")
                    Text("ポメラニアン")
                }
                DisclosureGroup("猫") {
                    Text("シャム")
                    Text("アメショー")
                }
            }
        }
    }
}
#Preview {
    ContentView()
}