SwiftUI树型结构OutlineGroup
SwiftUI树型结构OutlineGroup

SwiftUI树型结构OutlineGroup

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组件。

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注