Outline Groupを作成する【SwiftUI】
2021/02/16
この記事でできるもの
リストの中にリストを内包している感じのものが作れます.

実践
データモデルの実装
struct OutlineItem: Hashable, Identifiable {
var id: Self { self }
var value: String
var children: [OutlineItem]?
}
リストに表示するデータの作成
let data = [OutlineItem(value: "おにぎりの具", children: childData1),
OutlineItem(value: "サンドウィッチの具", children: childData2),
OutlineItem(value: "絵の具", children: childData3)]
内包するデータも作成する.
let childData1 = [OutlineItem(value: "鮭"),
OutlineItem(value: "昆布"),
OutlineItem(value: "ツナマヨ")]
let childData2 = [OutlineItem(value: "きゅうり"),
OutlineItem(value: "れたす"),
OutlineItem(value: "とまと")]
let childData3 = [OutlineItem(value: "赤"),
OutlineItem(value: "青"),
OutlineItem(value: "黄")]
ビューに反映させる
struct ContentView: View {
var body: some View {
List {
OutlineGroup(data, children: \.children) { item in
Text(item.value)
.frame(height: 50)
}
}
}
}
上記の書き方は簡略化できるので,以下を使用する.
struct ContentView: View {
var body: some View {
List (data, children: \.children) { item in
Text(item.value)
.frame(height: 50)
}
}
}