我有一个正在循环的数组数组。该数组的结构代表一年的 4 个季度:
Q0 一月、二月、三月
Q1 四月、五月、六月
Q2 七月、八月、九月
第三季度 10 月、11 月 12 月
@State var quarters: [[Month]] = [[.init(name: "January"),.init(name: "February"),.init(name: "March")],
[.init(name: "April"), .init(name: "May"), .init(name: "June")],
[.init(name: "July"),.init(name: "August"),.init(name: "September")],
[.init(name: "October"), .init(name: "November"), .init(name: "December")]]
在下面的 HStack 中,我尝试附加季度的索引,以便最终得到 Q0、Q1、Q2、Q3
VStack {
ForEach (self.quarters, id: \.self) { quarter in
VStack {
Spacer()
HStack {
Text("Q\(quarter.index)")
.font(.system(size: 40, weight: .black, design: .rounded))
}
}
}
}
这不起作用。有没有办法在这里获取 ForEach 循环数组内的数组索引?我知道如果 ForEach 循环使用范围作为其数据集,则有一种方法可以检索索引,但如果数据集是数组,则不能。
最佳答案
您可以使用枚举数组来实现:
struct TempView: View{
@State var quarters: [[Month]] = [[.init(name: "January", products: ["1", "2"]),.init(name: "February", products: ["1", "2"]),.init(name: "March", products: ["1", "2"])],
[.init(name: "April", products: ["1", "2"]), .init(name: "May", products: ["1", "2"]), .init(name: "June", products: ["1", "2"])]]
var body: some View {
ForEach (self.quarters.indices , id: \.self) { (index) in
VStack {
Spacer()
HStack {
Text("Q\(index)")
.font(.system(size: 40, weight: .black, design: .rounded))
Button("TestButton",action: {
self.quarters.append([.init(name: "January", products: ["1", "2"]),.init(name: "February", products: ["1", "2"]),.init(name: "March", products: ["1", "2"])])
})
}
Spacer()
}
}
}}
关于ios - 如何获取 ForEach 循环内项目的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58615941/