我正在尝试将UI删除与从CloudKit删除记录同步。 SwiftUI具有onDelete()
功能,您可以将其添加到“列表”视图中,以滑动方式删除手势。我正在尝试使用它来访问已删除项目的数组中的位置,因此我可以在另一个函数中引用它来处理从Cloud Kit进行的删除。这是SwiftUI设置onDelete()
的方式。
List {
ForEach(recordsHandler.audioRecords) { record in
Button(action: {
//set the showModal variable to true to show DetailModalView
self.showModal = true
self.recordToPass = record
}) {
AudioRowView(audio: record)
}
.sheet(isPresented: self.$showModal) {
PlaybackModalView(selectedRecord: self.recordToPass).environmentObject(self.recordsHandler)
}
}
.onDelete(perform: delete)
下面是我的自定义行视图。确实并不会增加太多问题,但万一确实会增加。
struct AudioRowView: View {
var audio: Audio
var body: some View {
HStack {
Text(audio.title)
.padding(5)
Spacer()
Text(audio.type)
.padding(10)
.background(Color.black)
.foregroundColor(Color.white)
.cornerRadius(20)
}
.frame(height: 50)
}
}
下面是当前的删除功能,该功能按原样提供滑动手势并从列表视图中删除条目。如前所述,我现在试图解释该行在数组中的位置,因此我可以在另一个函数中调用它,然后继续从CloudKit中删除该条目。
func delete(at offsets: IndexSet) {
recordsHandler.audioRecords.remove(atOffsets: offsets)
}
答案 0 :(得分:0)
当您获得偏移量后,就可以一一告诉:
func delete(at offsets: IndexSet) {
recordsHandler.audioRecords.remove(atOffsets: offsets)
for row in offsets{
print(row)}
}