我关注了this document (和 this one )使用 SwiftUI 将删除功能添加到应用程序中的我的列表中。两个页面都说,一旦添加 .onDelete(perform: ...) 代码,您将能够滑动并获得 Delete 按钮。然而,这不是我所看到的。代码可以编译,但我在滑动时看不到任何内容。
我的列表由如下代码支持:
@FetchRequest(
entity: ...,
sortDescriptors: []
) var myList: FetchedResults<MyEntity>
而不是@State。这会是一个问题吗?
下面是更多相关代码,以防有用:
private func deleteSpot(at index: IndexSet) {
print(#function)
}
.........
var body: some View {
VStack {
ForEach(self.myList, id: \.self.name) { item in
HStack {
Spacer()
Button(action: {
self.showingDestinList.toggle()
.....
UserDefaults.standard.set(item.name!, forKey: "LocSpot")
}) {
item.name.map(Text.init)
.font(.largeTitle)
.foregroundColor(.secondary)
}
Spacer()
}
}.onDelete(perform: deleteSpot)
}
最佳答案
动态容器的滑动删除仅适用于List
,因此请
var body: some View {
List { // << here !!
ForEach(self.myList, id: \.self.name) { item in
HStack {
// ... other code
}
}.onDelete(perform: deleteSpot)
}
}
关于ios - 在 SwiftUI 中实现列表删除功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63046164/