es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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)")
Tags:  , , ,

Answer

  1. Avatar for 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:

    let min = Int(vm.currentValues.wallmin) // asumiendo que wallmin es un String
    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("Seleccionar grosor de la pared")
           }
    
    Text("\(vm.lengthSliderValue)")
    

    En este código, min y max se calculan en base a los valores de vm.currentValues.wallmin y vm.currentValues.wallmax. Dado que probablemente sean cadenas de texto u otro tipo de dato, necesitan ser convertidos a enteros utilizando el inicializador Int().

    Luego, en el componente Slider, el parámetro in se establece en min...max, donde min y max 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 y vm.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.

Comments are closed.