我正在尝试将 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)
}