2011-12-21 2 views
42

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

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

+1

См этой ссылке [UISwitch действие] (http://stackoverflow.com/a/8521373/1072867) – akk

ответ

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

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

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

Как вы установили делегат? Я не вижу свойство 'delegate' или функцию' - setDelegate'. – Joeran

+1

Не нужно устанавливать делегат, его собственный метод чувак;) –

1

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

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

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

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

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

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

func switchValueDidChange() { 
    // do your stuff 
} 
Смежные вопросы