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不确定您是否仍在寻找答案,但我回答了一个类似的问题。如果有帮助,请告诉我。