web-dev-qa-db-ja.com

UISwitchの状態が変化したときにアクションを呼び出す方法は?

UISwitchの状態が変更され、オンまたはオフに設定されたときにアクションを実行したい。どうすればいいですか? 2つのオブジェクトをパラメーターとして渡す必要があります。

コードで作成されるため、xibを使用しません。

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

これは、スイッチの状態が変化したときに以下のメソッドを呼び出します

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

明らかに、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
}
4
Masih

私のための簡単な解決策(Swift 4)で作業しました):

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

[接続]タブの[送信済みイベント]で変更された値に上記の関数をリンクします

0
YWang