好吧,我在运行iOS 13的设备上遇到了完全相同的问题,当我开始运行Xcode 11时。问题是(至少对我来说)苹果(可能)用UISwitch的“valueChanged”钩子修复了这个问题,请参见:
不管怎样,之前发生的事情是开关的动作被触发了两次,所以我(显然)自己把开关设置到了正确的状态。这样地:
@IBAction func notificationsSwitchTapped(_ sender: UISwitch) {
if sender.isOn{
sender.setOn(false, animated: true)
}else{
sender.setOn(true, animated: true)
}
}
但从iOS 13 Xcode 11开始,“valueChanged”UISwitch错误得到了修复,并且。我正在检查的isOn()值实际上已经是新值:
@IBAction func notificationsSwitchTapped(_ sender: UISwitch) {
if sender.isOn{
// The switch has been turned on
}else{
// The switch has been turned off
}
}
长话短说,您的交换机之前可能被调用过两次,因此您的UISwitch状态布尔值与您的Xcode 11 iOS 13代码相反。