foreach的view循环是比较常用的循环方式,有的时候例如list/form项目需要点击时,需要告诉下一层级我们点击的是哪个东西。所以这个时候我们就需要获取点击项目的index信息。

使用数组范围

1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct ContentView: View {
@State private var array = [1, 1, 2]

func doSomething(index: Int) {
self.array = [1, 2, 3]
}

var body: some View {
ForEach(0..<array.count) { i in
Text("\(self.array[i])")
.onTapGesture { self.doSomething(index: i) }
}
}
}

使用索引

索引属性是一个数字范围

1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct ContentView: View {
@State private var array = [1, 1, 2]

func doSomething(index: Int) {
self.array = [1, 2, 3]
}

var body: some View {
ForEach(array.indices) { i in
Text("\(self.array[i])")
.onTapGesture { self.doSomething(index: i) }
}
}
}

参考文章

Get index in ForEach in SwiftUI