Listview 删除嵌套属性中的元素时更新SwiftUI列表
所以我有一些快捷的代码,看起来像这样:Listview 删除嵌套属性中的元素时更新SwiftUI列表,listview,swiftui,Listview,Swiftui,所以我有一些快捷的代码,看起来像这样: struct OverridesListView: View { @ObservedObject var dataStore: DataStore var body: some View { NavigationView { List { ForEach(dataStore.data) { element in Text(ele
struct OverridesListView: View {
@ObservedObject var dataStore: DataStore
var body: some View {
NavigationView {
List {
ForEach(dataStore.data) { element in
Text(element.description)
}
.onDelete { indexSet in
self.dataStore.data.remove(atOffsets: indexSet)
}
}
}
}
}
其中,数据存储
结构如下所示:
struct DataStore {
var data: [Element]
}
似乎当我将新元素添加到
data
(dataStore.data.append(newElement)
)时,列表视图会相应地更新。但是,从数据中删除元素(self.dataStore.data.remove(atoffset:indexSet)
)似乎不会更新列表。我在该行之后设置了一个断点,并确保self.dataStore.data
实际上是空的。我遗漏了什么吗?甚至不知道这是如何为您编译的。这就是它的工作原理:
import SwiftUI
typealias Element = String
class DataStore: ObservableObject {
@Published var data: [Element]
init(data: [Element]) {
self.data = data
}
}
struct OverridesListView: View {
@ObservedObject var dataStore: DataStore
var body: some View {
NavigationView {
List {
ForEach(dataStore.data, id: \.self) { element in
Text(element.description)
}
.onDelete { indexSet in
self.dataStore.data.remove(atOffsets: indexSet)
}
}
}
}
}
struct OverriesListView_Previews: PreviewProvider {
static var previews: some View {
OverridesListView(dataStore: DataStore(data: ["Blah", "Blubb"]))
}
}