webentwicklung-frage-antwort-db.com.de

Wie rufe ich eine Aktion auf, wenn sich der Status von UISwitch ändert?

Ich möchte eine Aktion ausführen, wenn UISwitch seinen Status ändert und somit ein- oder ausgeschaltet ist. Wie mache ich das? Ich muss zwei Objekte als Parameter übergeben. 

Es wird im Code erstellt und verwendet daher nicht xib.

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

Dadurch wird die untenstehende Methode aufgerufen, wenn sich Ihr Schalterstatus ändert

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

Natürlich können wir dasselbe mit Swift tun, hier ist der Code (kompiliert und mit der neuesten Version von Swift 3.1 gearbeitet)

Fügen Sie Ihrer Schaltfläche eine Aktion hinzu:

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

Und implementiere diese Methode:

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

Oder auch wenn Sie den Absender nicht verwenden, können Sie Folgendes entfernen:

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

Einfache Lösung für mich (mit Swift 4 gearbeitet):

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

Verknüpfen Sie die obige Funktion mit dem Wert, der unter "Gesendete Ereignisse" auf der Registerkarte "Verbindung" geändert wurde

0
YWang