Подтвердить что ты не робот

Как вызвать действие при изменении состояния UISwitch?

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

Очевидно, что мы можем сделать то же самое со 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
}

Ответ 3

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

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

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