В представлении со списком, когда пользователь удаляет строку , я сохраняю удаленные смещения в переменной состояния. Затем я показываю DeleteConfirmationView
Код: Выделить всё
@State private var deleteOffsets: IndexSet?Сводка примера кода:
р>
Код: Выделить всё
var body: some View {
Group {
List {
ForEach(...) {
//stuff
}
.onDelete(perform: preDelete)
}
}
.sheet(isPresented: $showDeleteConfirmation) {
if let delOffsets = deleteOffsets {
DeleteConfirmationView(delValue: fakeData[delOffsets.first!].aValue, delIndex: delOffsets.first) {
realDelete(at: delOffsets)
}
}
else {
Text("Error")
}
}
}
func preDelete(at offsets: IndexSet) {
deleteOffsets = offsets
showDeleteConfirmation = true
}
func realDelete(at offsets: IndexSet) {
offsets.forEach { index in
let aData = fakeData[index]
context.delete(aData)
}
}
Что я делаю неправильно? Может ли кто-нибудь мне помочь?
В этом репозитории есть код.
Подробнее здесь: https://stackoverflow.com/questions/790 ... rom-a-list
Мобильная версия