我知道SwiftUI目前不支持常规的for循环,而是提供一个名为ForEach的东西,但是它和List之间有什么区别?
答案 0 :(得分:11)
ForEach
是一个视图,使您可以将数据集合传递给其初始化程序,然后从您提供的闭包中创建多个“子视图”。关于如何排列视图,它没有任何语义。
ForEach(1...5) { row in
Text("Row \(row)")
}
将创建等价的
Text("Row 1")
Text("Row 2")
Text("Row 3")
Text("Row 4")
Text("Row 5")
包装在单个容器视图中。
List
是可以将多个视图组合在一起的视图,但不一定是同一类型的视图。您可以简单地添加多个视图而没有任何循环。
List {
Image("avatar")
Text("Title")
Button(action: {
print("Button tapped!")
}) {
Text("Energize!")
}
}
为方便起见,使用List
初始化程序可以像ForEach
视图一样使用它,以防您只想拥有一个仅包含单个单元格类型的列表。
List(1...5) { row in
Text("Row \(row)")
}
列表因平台而异。例如,在iOS上,列表将显示为表格视图,并在其垂直堆叠的视图之间插入分隔线。
您可以在ForEach
视图中使用List
视图同时具有动态和静态内容–这是 SwiftUI 的一项非常强大的功能。
< / p>
List {
Text("Food")
ForEach(meals) { meal in
Text(meal.name)
}
Text("Drinks")
ForEach(drinks) { drink in
Text(drink.name)
}
}
答案 1 :(得分:3)
List
:
ForEach
:
List
+ ForEach
=超级功能。例如,在这种情况下,List
对ForEach
中的每个视图使用重用单元格模式。您也可以使用onMove
,onDelete
...
答案 2 :(得分:1)
简单说明: