gpt4 book ai didi

swift - 如何使用 SwiftUI 的 onDelete() 函数访问数组位置

转载 作者:行者123 更新时间:2023-11-30 10:32:30 26 4
gpt4 key购买 nike

我正在尝试将 UI 删除与从 CloudKit 中删除记录同步。 SwiftUI 具有 onDelete() 函数,您可以将其添加到 ListView 中,从而为您提供滑动删除手势。我试图使用它来访问已删除项目的数组中的位置,以便我可以在另一个函数中引用它来处理从 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)

下面是我的自定义行 View 。并不会真正增加问题太多,但以防万一。

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)
}
}

下面是目前的删除功能,它按原样提供滑动手势并从 ListView 中删除条目。如前所述,我现在正在尝试破译该行在数组中的位置,因此我可以在另一个函数中调用它并继续从 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)}
}

关于swift - 如何使用 SwiftUI 的 onDelete() 函数访问数组位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58861279/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com