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