当ForEach遍历数组的indices时,由于id: \.self,所有ForEach中的所有创建的视图绑定的id是索引值,为了避免所创建的视图渲染的图片能得到更新,可以使用遍历的模型的唯一id来对所创建的视图左唯一id绑定
举例如下
struct ContentView: View {
@State private var imageNames = ["image1", "image2", "image3"]
var body: some View {
VStack {
ForEach(imageNames.indices, id: \.self) { index in
ImageView(imageName: self.imageNames[index])
.onTapGesture {
}
.id(imageNames[i])
}
}
}
}
关键代码就是这个id
.id(imageNames[i])