How to link a boolean value to the on/off state of a UISwitch? How to link a boolean value to the on/off state of a UISwitch? ios ios

How to link a boolean value to the on/off state of a UISwitch?


Add the UISwitch Reference into ViewController.swift file.

@IBOutlet var mySwitch: UISwitch @IBOutlet var switchState: UILabel

then add the target event into the viewdidload method like below

mySwitch.addTarget(self, action: #selector(ViewController.switchIsChanged(_:)), forControlEvents: UIControlEvents.ValueChanged)

When the switch is flipped the UIControlEventValueChanged event is triggered and the stateChanged method will be called.

func switchIsChanged(mySwitch: UISwitch) {    if mySwitch.on {        switchState.text = "UISwitch is ON"    } else {        switchState.text = "UISwitch is OFF"    }}

Swift 3.0

func switchIsChanged(mySwitch: UISwitch) {    if mySwitch.isOn {        switchState.text = "UISwitch is ON"    } else {        switchState.text = "UISwitch is OFF"    }}

Swift 4.0

@objc func switchIsChanged(mySwitch: UISwitch) {    if mySwitch.isOn {        switchState.text = "UISwitch is ON"    } else {        switchState.text = "UISwitch is OFF"    }}

find brief tutorial in http://sourcefreeze.com/uiswitch-tutorial-using-swift-in-ios8/


Succinctness, even parsimony, is important in coding style. Try this:

@IBAction func switchValueChanged (sender: UISwitch) {  advice.isInProduction = sender.on  print ("It's \(advice.isInProduction)!")}

In your original code, you likely crashed because acsessabilitySwitch or advice are unbound (have values of nil).

[Updated - replaced println with print]


For swift 3

enter image description here

@IBAction func switchValueChanged(_ sender: UISwitch) {        print(sender.isOn)}