【发布时间】:2021-01-14 02:11:24
【问题描述】:
使用List 可以简单地使用.onDelete 修饰符从列表中删除行。但是我们如何在LazyVStack 中显示的ForEach 中做同样的事情。我正在使用SwipeCell 应用拖动手势并显示删除按钮,但我如何从CoreData 中实际删除,特别是在这种情况下如何访问IndexSet
LazyVStack {
ForEach(items) { item in
Text("\(item.name)")
.swipeCell(cellPosition: .right, leftSlot: nil, rightSlot: slot1)
.alert(isPresented: $showAlert){
Alert(title: Text("Delete Task?"), message: nil, primaryButton:.destructive(Text("Delete"), action: {
// HOW DO I DELETE HERE ?
dismissDestructiveDelayButton()
}),secondaryButton: .cancel({dismissDestructiveDelayButton()}))
}
}
}
private func deleteItems(offsets: IndexSet) {
withAnimation {
offsets.map { items[$0] }.forEach(viewContext.delete)
do {
try viewContext.save()
} catch {
let nsError = error as NSError
fatalError("Unresolved error \(nsError), \(nsError.userInfo)")
}
}
}
【问题讨论】:
-
这是否回答了您的问题stackoverflow.com/a/63833510/12299030?想法是一样的。
-
任何更新??如果是,请发布您的答案。
标签: ios swift xcode core-data swiftui