我尝试了以下代码来执行“记住我”功能。它工作正常。但是,在这里我面临一个问题。如果我选择了一个写有两个值的复选框并进入了另一个屏幕。当我更改两个值时,需要选中和取消选中复选框。之后,它是注册表的存储。我这里需要。 不需要每次都勾选和取消勾选复选框。有谁知道我应该在这里犯什么错误和遗漏什么?
@IBAction func rememberMeAction(_ sender: UIButton) {
if checkBoxBtn.isSelected == false {
UserDefaults.standard.set(loginID.text!, forKey: "firstvalue")
UserDefaults.standard.set(loginPWD.text!, forKey: "secondvalue")
checkBoxBtn.setImage(UIImage(named: "checked.png"), for: .normal)
UserDefaults.standard.set(true, forKey: "checkBoxStatus")
checkBoxBtn.isSelected = true
}
else {
UserDefaults.standard.set(false, forKey: "firstvalue")
UserDefaults.standard.set(false, forKey: "secondvalue")
UserDefaults.standard.synchronize()
checkBoxBtn.setImage(UIImage(named: "unchecked.png"), for: .normal)
UserDefaults.standard.set(false, forKey: "checkBoxStatus")
checkBoxBtn.isSelected = false
}
}
答案 0 :(得分:0)
您问题中的代码是对事件的响应。
我想这是绑定到 Switch 元素的 Value Changed
事件。所以发生的事情是,当用户点击开关时,值发生变化(即从关闭到打开)然后调用您的代码,切换开关选择(从打开到关闭)。
您不应尝试在与同一 Switch 相关的事件中更改 Switch 的选定状态