I want to perform some action when UISwitch changes its state, thus is set on or off. How do I do this? I need to pass two objects as parameters.
It's created in code, thus not using xib.
I want to perform some action when UISwitch changes its state, thus is set on or off. How do I do this? I need to pass two objects as parameters.
It's created in code, thus not using xib.
[yourSwitchObject addTarget:self action:@selector(setState:) forControlEvents:UIControlEventValueChanged];
This will call the below method when your switch state changes
- (void)setState:(id)sender
{
BOOL state = [sender isOn];
NSString *rez = state == YES ? @"YES" : @"NO";
NSLog(rez);
}
Obviously we can do the same with Swift, here is the code (compiled and worked with the latest version of the Swift 3.1)
Add action to your switch button:
mySwitch.addTarget(self, action: #selector(self.switchValueDidChange), for: .valueChanged)
And implement this method:
@objc func switchValueDidChange(sender:UISwitch!) {
print(sender.isOn)
}
Or even if you are not using the sender you may remove:
func switchValueDidChange() {
// do your stuff
}
Easy solution for me (worked with swift 4):
@IBAction func toggleSwitch(_ sender: UISwitch) {
if(mySwitch.isOn) {
//Do something
} else {
//Do something
}
}
Link the above function with value changed in Sent Events under connection tab