2011-12-21 15 views
42

Quiero realizar alguna acción cuando UISwitch cambia su estado, por lo tanto, se activa o desactiva. ¿Cómo hago esto? Necesito pasar dos objetos como parámetros.¿Cómo llamar a una acción cuando UISwitch cambia de estado?

Se ha creado en código, por lo que no utiliza xib.

+1

Consulte este enlace [acción UISwitch] (http://stackoverflow.com/a/8521373/1072867) – akk

Respuesta

107
[yourSwitchObject addTarget:self action:@selector(setState:) forControlEvents:UIControlEventValueChanged]; 

Esto llamará al método siguiente cuando su estado de conmutación cambia

- (void)setState:(id)sender 
{ 
    BOOL state = [sender isOn]; 
    NSString *rez = state == YES ? @"YES" : @"NO"; 
    NSLog(rez); 
} 
+3

¿Cómo configuraría el delegado? No veo una propiedad 'delegate' ni' 'setDelegate'. – Joeran

+1

No hay necesidad de configurar delegado, es tu propio método amigo;) –

1

Obviamente podemos hacer lo mismo con Swift, aquí está el código (compilado y trabajó con la última versión del Swift 3,1)

Agregar acción a su botón del interruptor:

mySwitch.addTarget(self, action: #selector(self.switchValueDidChange), for: .valueChanged) 

y poner en práctica este método:

func switchValueDidChange(sender:UISwitch!) { 
    print(sender.isOn) 
} 

O incluso si no está utilizando el remitente puede quitar:

func switchValueDidChange() { 
    // do your stuff 
} 
Cuestiones relacionadas