swiftui - SwiftUI - ForEach 与 Stride
问题描述
我试图创建一个 Hstack 卡片列表,也就是说,我想创建一系列行的滚动视图。每行将包含并排显示的两个视图的 HStack,并由一些列表数据结构初始化。
struct MyHStackView: View {
var myArray = [SomeStruct(1), SomeStruct(3), SomeStruct(4), SomeStruct(5), SomeStruct(6)]
var body: some View {
ScrollView(.vertical) {
VStack {
ForEach(0..<self.myArray.count) { index in
HStack {
SubView(myArray[index])
SubView(myArray[index+1])
}
}
}
}
唯一的问题是我当前的实现触及了数组的每个元素,stride
新的 ForEach 中是否内置了一个函数,以便我可以索引数组上的每个其他元素来初始化行?你会如何处理这个问题?
解决方案
如果只是每隔一个,你可以试试
VStack {
ForEach(0 ..< self.myArray.count/2) { index in
HStack {
SubView(myArray[index * 2])
SubView(myArray[index * 2 + 1])
}
否则,您可能需要使用stride
以下功能:
ForEach( Array(stride(from: 0, to: self.myArray.count, by: 2)), id: \.self) { index in
推荐阅读
- c# - 使用反射的动态创建的类的 getter 和 setter 的 C# 动态委托
- python - Python - Holoviews 没有图像
- c - C中的字符数组和字符串终止字符
- css - 网格不听单元格的“最小宽度:最小内容”
- android - 我无法运行 Espresso 测试
- typescript - 打字稿工厂函数签名
- node.js - bcrypt.compare 与 Promise 总是返回 false
- c# - Bot framework v4 循环对话框参考
- c# - Linq 查询不会从另一个对象中的对象返回结果
- c# - 如何获取richTextBox中添加的单词的TextPointers?