如何使用 SwiftUI 的 onDelete() 函数访问数组位置
How to access the array position using SwiftUI's onDelete() function
我正在尝试将 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)
}
因为给了你偏移量,所以你可以一一告诉:
func delete(at offsets: IndexSet) {
recordsHandler.audioRecords.remove(atOffsets: offsets)
for row in offsets{
print(row)}
}
我正在尝试将 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)
}
因为给了你偏移量,所以你可以一一告诉:
func delete(at offsets: IndexSet) {
recordsHandler.audioRecords.remove(atOffsets: offsets)
for row in offsets{
print(row)}
}