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
]