2009-07-08 17 views
7

m nuevo en objective-c, he hecho una aplicación de página de inicio de sesión en la que he usado UISwitch para recordar detalles de inicio de sesión si el interruptor está en modo activado. He terminado para recordar los detalles de inicio de sesión pero el problema es cómo usar la condición de encendido/apagado. Gracias por adelantadoUdeswitch on/off

Respuesta

7

Agregaría una declaración condicional en algún lugar de su código dependiendo de la propiedad del interruptor on. Digamos, por ejemplo, que recuerda detalles de inicio de sesión en un método llamado rememberLoginDetails. Lo que se puede hacer es, cuando se activa algún tipo de acción (el usuario abandona la página de inicio de sesión, por ejemplo):

if([yourSwitch isOn]) { 
    [self rememberLoginDetails]; 
} else { 
    // Do nothing - switch is not on. 
}

El método importante aquí es el método para la isOn UISwitch yourSwitch. isOn es el captador para la propiedad on del conmutador, que es una propiedad BOOL que contiene YES si el conmutador está activado y NO si no lo está.

Para obtener más información, puede ver el UISwitch class reference, específicamente el part about isOn.

+0

Hola Tim, he usado tu código ... pero el problema es el mismo. es recordar los detalles en off también. –

+0

En ese caso, sería útil si pudiera editar su pregunta original para incluir el código que está usando. – Tim

+0

@Harita: Tuve el mismo problema ... Intenté usar == TRUE después y todavía no funcionó. Luego entré en el constructor de interfaz, conecté el interruptor a mi IBOutlet var y funcionó:] – abelito

0

Creo que el código debe ser la siguiente:

if([yourSwitch isOn] == YES) { 
    [self rememberLoginDetails]; 
} else { 
    // Do nothing - switch is not on. 
} 
+1

No, no es así. Si el valor del retorno es un BOOL, entonces no necesita usar un operador de comparación, ya que el "si" opera en un BOOL (si (VERDADERO) hace las cosas; si no, haga otras cosas;). Por lo tanto, siempre que [yourSwitch isOn] devuelva SÍ (o NO), el "si" atravesará correctamente. Este código aquí realmente tiene que hacer más llamadas, lo que lo hace más lento (solo en unos pocos milisegundos, pero aún así). – ColdLogic

-1

Esta es otra solución para esa pregunta.

if (switchValue.on == YES) 
{ 
    // Code... 
} 
else 
{ 
    // Other code... 
} 
17

La solución más fácil de todos :)

if (switchValue.on){ 
    //Remember Login Details 
} 
else{ 
    //Code something else 
} 
+0

¿Cómo puedo agregar un valor al interruptor? –

-1

que tenía el mismo problema, no tenía el nombre de la UISwitch = Seleccionado

lo cambié a otro nombre y funcionó.

3

si desea recordar los detalles de inicio de sesión justo en el momento en que el usuario ENCIENDE el interruptor, puede hacerlo creando una Acción.

- (IBAction)yourSwitch:(id)sender { 
    if([sender isOn]){ 
     //do your stuff here 
    }else{ 
    } 
} 
0

Esta es otra solución, si su UISwitch está en una tableView

1 añadir este código en "tableView: cellForRowAtIndexPath:" método

[switchControl addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged]; 

2 añadir este método

- (void) switchChanged:(id)sender { 
    UISwitch *switchControl = sender; 
    NSLog(@"The switch is %@", switchControl.on ? @"ON" : @"OFF"); 
}