Как вызвать действие, когда UISwitch меняет состояние? - PullRequest
50 голосов
/ 21 декабря 2011

Я хочу выполнить какое-то действие, когда UISwitch меняет свое состояние, поэтому он включен или выключен. Как мне это сделать? Мне нужно передать два объекта в качестве параметров.

Он создан в коде, поэтому не использует xib.

Ответы [ 3 ]

115 голосов
/ 21 декабря 2011
[yourSwitchObject addTarget:self action:@selector(setState:) forControlEvents:UIControlEventValueChanged]; 

Это вызовет метод ниже, когда ваше состояние переключателя изменится

- (void)setState:(id)sender 
{
    BOOL state = [sender isOn];
    NSString *rez = state == YES ? @"YES" : @"NO";
    NSLog(rez);
}
4 голосов
/ 13 июля 2017

Очевидно, что мы можем сделать то же самое со Swift, вот код (скомпилированный и работавший с последней версией Swift 3.1 )

Добавить действие к кнопке переключателя:

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

И реализовать этот метод:

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

Или, даже если вы не используете отправителя, вы можете удалить:

func switchValueDidChange() {
    // do your stuff
}
0 голосов
/ 22 марта 2018

Простое решение для меня (работал со swift 4):

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

Свяжите вышеуказанную функцию со значением, измененным в Отправленных событиях на вкладке подключения

...