Swiftui 列出一个视图';斯威夫蒂儿童酒店

Swiftui 列出一个视图';斯威夫蒂儿童酒店,swiftui,Swiftui,是否有方法列出自定义视图的子视图?例如,如果我有一个类似于Group的结构,我是否能够列出所有子视图s?以下是一个例子: ParentView { Child1() Child2() Child3() } 是否有一种方法可以调用ParentView,它将返回一个数组,其中包含Child1、Child2、和Child3?SwiftUI带来了UI工作方式的整个范式转变 当你创建一个像 ParentView { Child1() Child2() } 您实际

是否有方法列出自定义
视图的子视图?例如,如果我有一个类似于
Group
的结构,我是否能够列出所有子
视图
s?以下是一个例子:

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

是否有一种方法可以调用
ParentView
,它将返回一个数组,其中包含
Child1
Child2
、和
Child3

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)
    }
}

这将创建一个视图,更新其
@状态
数据,然后用新数据重新加载视图。

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)
    }
}


这将创建一个更新其
@状态
数据的视图,然后用新数据重新加载该视图。

我不确定我是否理解你的问题,你能把你的问题改写一下吗?@NathanielFredericks我已经更新了我的问题。这说明问题更清楚了吗?是的,谢谢你澄清了这个问题。我看了一下文件,似乎没有办法找到父母的孩子。你为什么要这样做?你会如何处理这些数据?@Fogmeister我特别想用父视图中的数据填充子视图,但最好知道如何处理这些数据。我不确定我是否理解你的问题,你能把你的问题改写一下吗?@NathanielFredericks我已经更新了我的问题。这说明问题更清楚了吗?是的,谢谢你澄清了这个问题。我看了一下文件,似乎没有办法找到父母的孩子。你为什么要这样做?您将如何处理这些数据?@Fogmeister我特别想用父视图中的数据填充子视图,但最好知道如何处理这些数据。谢谢,这很有帮助。但我确实有一个问题;此示例仍在创建每个文本视图。当一个“子视图”被传递到“父视图”时,有没有办法做同样的事情?我正在尝试制作一个更通用的组件,它可以获取项目列表,并像在您的示例中一样,根据数据设置它们的内容。当然,
Text
只是一种获取一些数据的视图类型。因此,您可以使用类似于
MyRowView(item:item)
的东西来创建自己的自定义视图,称为
MyRowView
。作为旁注,不要担心每次重新加载时都会重新创建视图。在SwiftUI中创建视图非常便宜。谢谢你的旁注,这非常有帮助。这并不是我想要问的。我的问题的关键是我想制作一个不知道子视图是什么类型的组件,这样用户就可以向父视图传递任何内容(类似于
VStack
Group
的工作方式)。这有意义吗?感谢您在这个问题上花时间:)@zoecerver不确定您是否仍在寻找答案,但我回答了一个类似的问题。如果有帮助,请告诉我。谢谢,这很有帮助。但我确实有一个问题;此示例仍在创建每个文本视图。当一个“子视图”被传递到“父视图”时,有没有办法做同样的事情?我正在尝试制作一个更通用的组件,它可以获取项目列表,并像在您的示例中一样,根据数据设置它们的内容。当然,
Text
只是一种获取一些数据的视图类型。因此,您可以使用类似于
MyRowView(item:item)
的东西来创建自己的自定义视图,称为
MyRowView
。作为旁注,不要担心每次重新加载时都会重新创建视图。在SwiftUI中创建视图非常便宜。谢谢你的旁注,这非常有帮助。这并不是我想要问的。我的问题的关键是我想制作一个不知道子视图是什么类型的组件,这样用户就可以向父视图传递任何内容(类似于
VStack
Group
的工作方式)。这有意义吗?感谢您在这个问题上花时间:)@zoecerver不确定您是否仍在寻找答案,但我回答了一个类似的问题。如果有帮助,请告诉我。