Как вызвать действие при изменении состояния UISwitch?
Я хочу выполнить некоторые действия, когда UISwitch изменяет свое состояние, поэтому оно включено или выключено. Как мне это сделать? Мне нужно передать два объекта в качестве параметров.
Он создан в коде, поэтому не используется xib.
Ответы
Ответ 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
}
}
Свяжите вышеуказанную функцию со значением, измененным в Отправленных событиях на вкладке подключения