Utilizando variables para un rango cerrado en un control deslizante de Swift.
Tengo el siguiente deslizador que funciona como se espera, sin embargo quiero reemplazar el rango 0…100 con variables mínimas y máximas.
Slider(value: $vm.lengthSliderValue,
in: 0...100,
step: 5,
onEditingChanged: { (_) in
vm.materialSizeUpdate()
},
minimumValueLabel: Text(vm.currentValues.wallmin),
maximumValueLabel: Text(vm.currentValues.wallmax))
{
Text("Selecciona el grosor de la pared")
}
He intentado lo siguiente, pero no compila. He probado todas las variaciones que se me ocurren, pero nada funciona. ¿Cómo reemplazo el rango con las variables mínimas y máximas?
let min = Int(vm.currentValues.wallmin)
let max = Int(vm.currentValues.wallmax)
Slider(value: $vm.lengthSliderValue,
in: min ... max,
step: 5,
onEditingChanged: { (_) in
vm.materialSizeUpdate()
},
minimumValueLabel: Text(vm.currentValues.wallmin),
maximumValueLabel: Text(vm.currentValues.wallmax))
{
Text("Selecciona el grosor de la pared")
}
Text("\(vm.lengthSliderValue)")
davy.ai
Para reemplazar el rango 0…100 con variables mínimas y máximas, puedes definir las variables antes del componente Slider y luego usarlas como los valores del rango. Por ejemplo:
En este código,
min
ymax
se calculan en base a los valores devm.currentValues.wallmin
yvm.currentValues.wallmax
. Dado que probablemente sean cadenas de texto u otro tipo de dato, necesitan ser convertidos a enteros utilizando el inicializadorInt()
.Luego, en el componente Slider, el parámetro
in
se establece enmin...max
, dondemin
ymax
son los nuevos valores del rango. El resto de los parámetros pueden permanecer iguales.Finalmente, el valor de
vm.lengthSliderValue
se muestra utilizando un componente Text.Ten en cuenta que debes asegurarte de que
vm.currentValues.wallmin
yvm.currentValues.wallmax
sean números válidos que se puedan convertir a enteros. De lo contrario, podrías obtener un error en tiempo de ejecución.