SwiftUI 中的 List 和 ForEach 有什么区别?
What is the difference between List and ForEach in SwiftUI?
我知道 SwiftUI 目前不支持常规的 for 循环,而是提供了一种叫做 ForEach 的东西,但它和 List 有什么区别?
ForEach
是一个视图,它允许您将数据集合传递给它的初始化程序,然后从您提供的闭包中创建多个“子视图”。它没有关于如何排列视图的任何语义。
示例:
ForEach(1..<5) { row in
Text("Row \(row)")
}
将创建等效关闭
Text("Row 1")
Text("Row 2")
Text("Row 3")
Text("Row 4")
包装在单个容器视图中。
List
是可以将多个视图组合在一起的视图,但不一定是同一类型的视图。您可以简单地添加多个视图而无需任何循环。
示例 1:
List {
Image("avatar")
Text("Title")
Button(action: {
print("Button tapped!")
}) {
Text("Energize!")
}
}
作为便利,List
初始化程序允许您像使用 ForEach
视图一样使用它,以防您想要一个包含以下内容的列表只有一种细胞类型。
示例 2:
List(1..<5) { row in
Text("Row \(row)")
}
列表具有特殊外观,具体取决于平台。例如,在 iOS 上,列表将显示为 table 视图,并在其垂直堆叠的视图之间插入分隔线。
您可以在 List
视图中使用 ForEach
视图来同时拥有动态和静态内容 – SwiftUI.[=48= 的一个非常强大的功能]
示例 3:
List {
Text("Food")
ForEach(meals) { meal in
Text(meal.name)
}
Text("Drinks")
ForEach(drinks) { drink in
Text(drink.name)
}
}
SwiftUI 列表与 ForEach
List
:
- 混合内容(也允许使用集合)
- 可滚动
- 使用重用单元格模式(高效)
ForEach
:
- 仅适用于集合
List
+ ForEach
= 超级功能。在这种情况下,例如,List
对来自 ForEach
的每个视图使用重复使用的单元格模式。您也可以使用 onMove
、onDelete
...
简单说明:
- List 的行为类似于 UIScrollView(任意长的可滚动视图
的意见)
- ForEach 的行为有点像 UITableView(其中每个元素都有一个单元格视图,并且它也是可滚动的)
我知道 SwiftUI 目前不支持常规的 for 循环,而是提供了一种叫做 ForEach 的东西,但它和 List 有什么区别?
ForEach
是一个视图,它允许您将数据集合传递给它的初始化程序,然后从您提供的闭包中创建多个“子视图”。它没有关于如何排列视图的任何语义。示例:
ForEach(1..<5) { row in Text("Row \(row)") }
将创建等效关闭
Text("Row 1") Text("Row 2") Text("Row 3") Text("Row 4")
包装在单个容器视图中。
List
是可以将多个视图组合在一起的视图,但不一定是同一类型的视图。您可以简单地添加多个视图而无需任何循环。示例 1:
List { Image("avatar") Text("Title") Button(action: { print("Button tapped!") }) { Text("Energize!") } }
作为便利,
List
初始化程序允许您像使用ForEach
视图一样使用它,以防您想要一个包含以下内容的列表只有一种细胞类型。示例 2:
List(1..<5) { row in Text("Row \(row)") }
列表具有特殊外观,具体取决于平台。例如,在 iOS 上,列表将显示为 table 视图,并在其垂直堆叠的视图之间插入分隔线。
您可以在
List
视图中使用ForEach
视图来同时拥有动态和静态内容 – SwiftUI.[=48= 的一个非常强大的功能]示例 3:
List { Text("Food") ForEach(meals) { meal in Text(meal.name) } Text("Drinks") ForEach(drinks) { drink in Text(drink.name) } }
SwiftUI 列表与 ForEach
List
:
- 混合内容(也允许使用集合)
- 可滚动
- 使用重用单元格模式(高效)
ForEach
:
- 仅适用于集合
List
+ ForEach
= 超级功能。在这种情况下,例如,List
对来自 ForEach
的每个视图使用重复使用的单元格模式。您也可以使用 onMove
、onDelete
...
简单说明:
- List 的行为类似于 UIScrollView(任意长的可滚动视图 的意见)
- ForEach 的行为有点像 UITableView(其中每个元素都有一个单元格视图,并且它也是可滚动的)