我有一个包含数千项的 SwiftUI
列表。每个项如下:
class Item: Codable, Identifiable {
var id = UUID()
var prop1 = ""
var prop2 = ""
}
现在我这样做:
List(store.items.indices, id: \.self) { index in
DetailView(item: self.$store.items[index])
}.id(UUID())
我在循环中使用索引,因为我必须传递一个绑定到DetailView中。现在DetailView附加到Item的属性的文本字段。当DetailView更改Item的属性时,它会导致列表刷新所有项目,这是不希望的。此外,当其中一个属性更改时,仍然重要的是更新主视图,因为在macOS上,即使单击其中一个项,主视图仍然可见。我的问题是如何使从列表传入的Item更改时只更新该行?我还尝试了一种解决方案,其中我使用LazyVStack,它解决了性能问题,但我将List放在NavigationView中,而LazyVStack似乎不支持它。非常感谢任何建议。