web-dev-qa-db-fra.com

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

Je souhaite effectuer une action lorsque UISwitch change d’état et est donc activé ou désactivé. Comment puis-je faire cela? Je dois passer deux objets en tant que paramètres. 

Il est créé dans le code, n'utilisant donc pas xib.

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

Ceci appellera la méthode ci-dessous lorsque l'état de votre commutateur changera

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

Evidemment on peut faire la même chose avec Swift, voici le code (compilé et travaillé avec la dernière version du Swift 3.1 )

Ajouter une action à votre bouton de commutation:

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

Et implémentez cette méthode:

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

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

func switchValueDidChange() {
    // do your stuff
}
3
Masih

Solution facile pour moi (travaillé avec Swift 4):

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

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

0
YWang