我对我的代码为什么与我最初想象的相反感到困惑。以下是我的代码当前的功能:
//MARK: Actions
@IBAction func SwitchTap(sender: UISwitch) {
if mySwitch.on { //prints on if turning on
mySwitch.setOn(true, animated: true)
print ("switch is on")
}
else {
mySwitch.setOn(false, animated: true)
print("switch is off") //prints off if turning off
}
这是我认为应该的工作方式:
//MARK: Actions
@IBAction func SwitchTap(sender: UISwitch) {
if mySwitch.on {
mySwitch.setOn(**false**, animated: true) // should be false instead of true like in the previous example
print ("switch is on")
}
else {
mySwitch.setOn(**true**, animated: true) //should be true instead of false like in the previous example
print("switch is off")
}
我不明白为什么第一个版本能够工作,而第二个版本却不能。 SetOn 应该在第一个参数传递 false 时将开关关闭。但是当传递 true 时,它实际上关闭了开关,并且没有改变状态。
SwitchTap
函数是绑定在你添加到UISwitch
上的轻拍手势上,还是绑定在“ValueChanged”控件事件上?如果是后者,你真的应该将函数重命名为更少令人困惑的名称。 - rmaddy