2009-12-02 6 views
11

El valor de UISlider actualmente se muestra como un valor flotante. ¿Cómo lo muestro como un número entero?Cómo mostrar el valor de UISlider como Integer

sliderCtl = [[UISlider alloc] initWithFrame:frame]; 
    sliderCtl.minimumValue = 1; 
    sliderCtl.maximumValue = 15; 
    sliderCtl.continuous = NO; 
    sliderCtl.value = 1; 
    [sliderCtl setShowValue:YES]; 

Respuesta

2

Se puede truncar o redondear el valor del control deslizante y luego actualizarlo para dar la retroalimentación de los usuarios acerca del cambio (al parecer para ajustar al valor entero cuando el usuario suelta).

+0

la solución es que debo actualizarlo por mi cuenta ¿no? – RAGOpoR

+0

Eso debería funcionar. – gerry3

22

si desea que su control deslizante para ajustar a diferentes valores enteros, podría utilizar algo como esto en su valueChanged-función:

-(IBAction)valueChanged:(UISlider*)sender { 
    int discreteValue = roundl([sender value]); // Rounds float to an integer 
    [sender setValue:(float)discreteValue]; // Sets your slider to this value 
} 

Esto se ajustará el control deslizante después de soltar el dedo a los valores como 1,2 , ..., 15 según la distancia entre dos números. Si, por ejemplo, usted lanzó el control deslizante en 2.4, se ajustará de nuevo a 2, mientras que en 2.6 se ajustaría a 3.

+1

roundtl no parece existir en iOS. Xcode luego sugiere brillantemente "roundl", que tampoco existe. – Oscar

+0

Gracias por el aviso. He actualizado mi respuesta en consecuencia para usar la función roundl(), que acabo de probar. Lo extraño es que mi respuesta anterior funcionó en ese momento ... – thgc

+0

Parece que esto funciona nuevamente a partir de Xcode 4.5. Lo tengo funcionando correctamente, solo cambia si se va a romper ya que el usuario todavía lo está usando: el pulgar no se moverá hasta que el usuario lo arrastre al siguiente valor. – GeneralMike

Cuestiones relacionadas