57 votes

Comment appeler une action lorsque UISwitch change d'état ?

Je veux exécuter une action lorsque l'UISwitch change d'état, c'est-à-dire qu'il est activé ou désactivé. Comment dois-je m'y prendre ? Je dois passer deux objets comme paramètres.

Il est créé en code, et n'utilise donc pas de xib.

122voto

mac Points 1497
[yourSwitchObject addTarget:self action:@selector(setState:) forControlEvents:UIControlEventValueChanged]; 

Cela appellera la méthode ci-dessous lorsque l'état de votre interrupteur changera.

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

13voto

Masih Points 671

Il est évident que nous pouvons faire la même chose avec Swift, voici le code (compilé et travaillé avec la dernière version du Swift 3.1 )

Ajoutez de l'action à votre bouton de commutation :

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

Et mettez en œuvre cette méthode :

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

Ou même si vous n'utilisez pas l'expéditeur, vous pouvez le supprimer :

func switchValueDidChange() {
    // do your stuff
}

-1voto

YWang Points 11

Solution facile pour moi (a fonctionné avec swift 4) :

@IBAction func toggleSwitch(_ sender: UISwitch) {
    if(mySwitch.isOn) {
        //Do something
    } else {
        //Do something
    }
}

Associez la fonction ci-dessus à la valeur modifiée dans les événements envoyés sous l'onglet connexion.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X