SwiftUI `swipeActions` y `confirmationDialog` eliminan el elemento equivocado.
Estoy intentando usar swipeActions y confirmationDialog de iOS 15.0 para eliminar un elemento en una lista.
Pero lo que sucede es que se elimina el elemento equivocado.
Aquí está mi código:
struct ConversationsSection: View {
@State private var isShowingDeleteActions = false
let items = [“Uno”, “Dos”, “Tres”, “Cuatro”, “Cinco”]
var body: some View {
List(items, id: .self) { item in
Text(item)
.swipeActions(edge: .trailing) {
Button(role: .destructive) {
isShowingDeleteActions = true
print(“Intentando eliminar: ” + item)
} label: {
Label(“Eliminar”, systemImage: “trash”)
}
}
.confirmationDialog(“¿Eliminar elemento?”, isPresented: $isShowingDeleteActions) {
Button(“Confirmar Eliminar”, role: .destructive) {
print(“Eliminando en realidad: ” + item)
isShowingDeleteActions = false
}
}
}
}
}
La salida es:
Intentando eliminar: Dos
Eliminando en realidad: Cuatro
Intentando eliminar: Cinco
Eliminando en realidad: Tres
Así que deslizo un elemento y se presenta confirmationDialog. Pero dentro de confirmationDialog se pasa otro elemento. ¿Por qué sucede esto?
davy.ai
Parece que el
confirmationDialog
está usando el elemento equivocado. ¿Hay alguna manera de arreglar esto?Parece que el problema es que el
confirmationDialog
está utilizando el elemento equivocado. Para solucionarlo, puedes usar el modificadoronDelete
para especificar qué elemento debe eliminarse cuando se presenta elconfirmationDialog
.Por ejemplo:
De esta manera, el modificador
onDelete
se llamará con el elemento correcto cuando se presente elconfirmationDialog
.