Убедитесь, что элемент в списке изменяет свое значение id
при изменении содержимого. По сути, имеет sh визуальный контент для создания уникального значения для каждого визуального состояния.
например,
struct FooItem: Identifiable {
var id: UUID = UUID()
var text: String = ""
var visualID: String {
return id.uuidString
+ "\(text.hashValue)"
}
}
Я предполагаю, что внутреннее кэширование ZStack
не распознает, что объект изменился, когда id
не изменился.
То есть, используя ForEach
, это то, что у меня есть в моем коде (но List
также имеет id
) ...
var body: some View {
ZStack {
ForEach(self.changingList, id: \.visualID) { item in
SomeView(item: item)
.onTapGesture {
//blah blah
}
}
}
}
Я бью себя по голове этот точный вопрос в течение нескольких дней, пока не решится.