OutlineGroup 是 Apple 在 SwiftUI 中提供的一个层级数据展示组件,用于以树形结构(tree hierarchy)递归显示可展开/折叠的列表内容。
可以将嵌套数据模型直接映射为 UI 结构,而不需要手动管理每一层 ForEach 或状态。
基本要求
使用 OutlineGroup,数据必须是递归结构。
类似结构:
struct Node: Identifiable {
let id = UUID()
let name: String
var children: [Node]?
}
必须要查找到子节点结合,子节点和父节点类型相同,通常使用children: [Self]?
例如:
let data: [Node] = [
Node(name: "A", children: [
Node(name: "A-1", children: nil),
Node(name: "A-2", children: nil)
]),
Node(name: "B", children: nil)
]
List {
OutlineGroup(data, children: \.children) { item in
Text(item.name)
}
}
点击A可以显示A-1、A-2。

注意事项
1、children不能为空数组
如果children是空数组,那么仍然会显示展开箭头,但展开内容为空。
实际开发中,通过使用nil表示无子节点。
总结
OutlineGroup 是 SwiftUI中展示递归层级数据的自动树形UI组件。
