2011-10-15 12 views
35

Estoy tratando de trabajar con UIStepper para incrementar o disminuir un número entero, pero tanto "-" como "+" aumentan el número entero. ¿Cómo puedo reconocer el botón "+" y "-"?Cómo utilizar UIStepper

En el archivo de cabecera UIStepper hay dos UIButton s:

UIButton *_plusButton; 
UIButton *_minusButton; 

por ejemplo:

- (IBAction)changeValue:(id)sender 
{   
    UIStepper *stepper = (UIStepper *) sender; 

    stepper.maximumValue = 10; 
    stepper.minimumValue = 0;  
    if (stepper) 
    { 
     integer++; 
     [label setText:[NSString stringWithFormat:@"%d",integer]]; 
    } 
    else 
    { 
     integer--; 
     [label setText:[NSString stringWithFormat:@"%d",integer]]; 
    } 

} 

Respuesta

102

Usted debe ignorar el Ivars. Ellos no te ayudarán.

El UIStepper tiene una propiedad value que puede consultar para averiguar cuál es el valor actual. Por lo que su método podría ser simplemente:

- (IBAction)valueChanged:(UIStepper *)sender { 
    double value = [sender value]; 

    [label setText:[NSString stringWithFormat:@"%d", (int)value]]; 
} 
+0

gracias pero tengo este error: 'Múltiples métodos llamados 'value' found' y' Initializing 'double' con una expresión de ty incompatible pe 'NSString *' ' –

+5

@ Mc.Lover asegúrese de que la variable esté escrita o escrita correctamente. Deberás asegurarte de que sea explícitamente un 'UIStepper *'. Declararlo como un 'id' es lo que está causando la advertencia. –

+1

Puede hacer esto [(UIStepper *) valor del remitente] si está seguro de que el remitente siempre es un UIStepper. –

-6

Trate

stepper.maximumValue = 10.0; 
    stepper.minimumValue = 0.0; 
3

UIStepper devuelve el valor doble, para la versión rápida hacer esto:

@IBAction func stepperValue(sender: UIStepper) { print("the stepper value is :\(sender.value)") }

0

Tome la salida de UIStepper:

@property (strong, nonatomic) IBOutlet UIStepper *stepper; 

En viewDidLoad Método:

self.stepper.wraps=YES; 

si SÍ, el valor envuelve desde min < -> max. default = NO

self.stepper.autorepeat=YES; 

si SÍ, pulse & mantenga altera repetidamente valor. por defecto = SÍ

Ajuste el valor inicial a 0.

NSUInteger value= self.stepper.value; 

self.label.text= [NSString stringWithFormat:@"%02lu",(unsigned long)value]; 

ajustar el valor máximo

self.stepper.maximumValue=50; 

Tome la acción de UIStepper:

- (IBAction)valueDidChanged:(UIStepper *)sender { 
//Whenever the stepper value increase and decrease the sender.value fetch the curent value of stepper 
     NSUInteger value= sender.value; 
     self.label.text= [NSString stringWithFormat:@"%02lu",value]; 
}