UISwitchの状態が変更され、オンまたはオフに設定されたときにアクションを実行したい。どうすればいいですか? 2つのオブジェクトをパラメーターとして渡す必要があります。
コードで作成されるため、xibを使用しません。
[yourSwitchObject addTarget:self action:@selector(setState:) forControlEvents:UIControlEventValueChanged];
これは、スイッチの状態が変化したときに以下のメソッドを呼び出します
- (void)setState:(id)sender
{
BOOL state = [sender isOn];
NSString *rez = state == YES ? @"YES" : @"NO";
NSLog(rez);
}
明らかに、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
}
私のための簡単な解決策(Swift 4)で作業しました):
@IBAction func toggleSwitch(_ sender: UISwitch) {
if(mySwitch.isOn) {
//Do something
} else {
//Do something
}
}
[接続]タブの[送信済みイベント]で変更された値に上記の関数をリンクします