我有一个数组,并且要遍历它,以便根据数组值初始化视图,并希望根据数组项索引执行操作
当我遍历对象时
ForEach(array, id: \.self) { item in
CustomView(item: item)
.tapAction {
self.doSomething(index) // Can't get index, so this won't work
}
}
所以,我尝试了另一种方法
ForEach((0..
但随着第二种方法的问题是,当我改变阵列,例如,如果doSomething
做以下
self.array = [1,2,3]
ForEach
即使值已更改,视图也不会更改。我相信,发生这种情况是因为array.count
没有改变。
有解决方案吗?提前致谢。
1> kontiki..:
这对我有用:
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..
切勿使用0 .. 我相信,如果array中有相同的元素,则array.firstIndex(of:item)不会起作用,例如,如果array为`[1,1,1]`,它将为所有元素返回`0`。 。同样,对数组的每个元素执行此操作也不是很好的性能。我的数组是一个@State变量。`@State私有var数组:[Int] = [1、1、2]
请注意,[iOS 13 beta 5发行说明](https://developer.apple.com/documentation/ios_ipados_release_notes/ios_ipados_13_beta_5_release_notes?language=objc)发出以下有关将范围传递给`ForEach`的警告:不应传递在运行时更改的范围。如果您使用在运行时更改的变量来定义范围,则列表将根据初始范围显示视图,并忽略对该范围的任何后续更新。”