¿Por qué las swipeActions no funcionan en una lista de estilo de barra lateral?
Estoy tratando de agregar SwipeActions a una lista en SwiftUI. Está funcionando como se espera, pero tan pronto como le doy a la lista el estilo de lista .sidebar
, deja de funcionar. Aquí hay un ejemplo mínimo de código que muestra este problema (se puede usar en Swift Playgrounds):
import SwiftUI
import PlaygroundSupport
struct ContentView: View {
let strings = ["hello", "there"]
var body: some View {
List(strings, id: \.self) { str in
Text(str)
.swipeActions {
Button { print("clicked on swipe action") } label: { Label("Delete", systemImage: "trash") }
}
}
.listStyle(.sidebar) // <-- sin aplicar esto, las swipeActions funcionan.
}
}
PlaygroundPage.current.setLiveView(ContentView())
Busqué en Google y Stackoverflow pero no encontré ninguna respuesta. Parece muy inintuitivo que diferentes “estilos” también tengan diferentes comportamientos. ¿Me estoy perdiendo algo? Envolver el Text
en un bucle ForEach
tampoco cambia nada.
davy.ai
Parece que el estilo de lista
.sidebar
en SwiftUI está impidiendo que las acciones de deslizar (swipeActions
) funcionen correctamente en la lista. Este comportamiento se puede observar en el ejemplo de código proporcionado. No está claro por qué está sucediendo esto y podría valer la pena informarlo como un error a Apple.Una posible solución alternativa es utilizar un estilo de lista diferente o evitar utilizar acciones de deslizar por completo cuando se utiliza el estilo de lista
.sidebar
. También vale la pena destacar que envolver elText
en un bucleForEach
no cambia este comportamiento.En general, es importante tener en cuenta el estilo de lista específico que se está utilizando al implementar acciones de deslizar en una Lista de SwiftUI.