所以我有一些看起来像这样的SwiftUI代码:
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)
}
}
}
}
}
DataStore
结构如下:
struct DataStore {
var data: [Element]
}
似乎当我向data
(dataStore.data.append(newElement)
)添加新元素时,列表视图也会相应地更新。但是,从data
(self.dataStore.data.remove(atOffsets: indexSet)
)中删除元素似乎并不会更新列表。我在该行之后设置了一个断点,并确保self.dataStore.data
实际上为空。我想念什么吗?
答案 0 :(得分:0)
不确定该如何为您编译。它是这样工作的:
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"]))
}
}