列出视图的子项SwiftUI

时间:2019-06-11 01:10:21

标签: swiftui

是否可以列出自定义View的孩子?例如,如果我有一个Group这样的结构,是否可以列出所有子View?这是一个示例:

ParentView {
    Child1()
    Child2()
    Child3()
}

有没有可以在ParentView上调用的方法,该方法将返回包含Child1Child2Child3的数组?

1 个答案:

答案 0 :(得分:0)

SwiftUI带来了UI工作方式的整个范例转变。

创建类似...的视图时

ParentView {
    Child1()
    Child2()
}

您实际上并不是在创建视图。同样,应该没有理由检查视图的状态。

  

使用SwiftUI,视图结构是数据的功能。

也就是说,当数据更改时,视图层次结构将更新以反映这些更改。

这也意味着数据流是一种方式。从您的数据...到视图。您不会从视图中获取数据。

因此,您不应该检查这样的视图。您应该检查创建视图的数据,以这种方式找出有关数据。

更新

同样,如果要使用父视图中的数据填充子视图,则应使用@State对象来保存此数据,然后更新数据以重新加载视图。

像这样...

struct MyUpdatingView: View {
    @State private var items: [Int] = []

    var body: some View {
        VStack {
            Button(action: { updateItems() }) {
                Text("New item")
            }

            List(items) { item in
                Text("Item: \(item)")
            }
        }
    }

    func updateItems() {
        items.append(items.count)
    }
}

这将创建一个视图,该视图更新其@State数据,然后依次使用新数据重新加载该视图。