在 swift 中使用用户默认值保存复选框按钮状态



>view 控制器有两个复选框按钮 1.切克钦 2.结帐

正在将 checkIN [复选框按钮] 状态保存在用户默认值中,工作正常,但是当我在 Nextviewcontroller 中使用该用户默认值键时,它始终显示 true 并且不会遇到错误块 这是代码

在主视图控制器

@IBAction func CheckInButtonClick(_ sender: UIButton) {

for senderdata in checkINOUT {
senderdata.setImage( UIImage(named:"uncheck1"), for: .normal)
print("uncheck is called")
}

sender.setImage(UIImage(named:"check1"), for: .normal)
prefs.set(true, forKey: "check")
prefs.synchronize()
}

下一页视图控制器

override func viewDidLoad() {
super.viewDidLoad()
{        
let prefs:UserDefaults = UserDefaults.standard
if  prefs.bool(forKey: "check") ==true
{
print("select")
} else {
print("unselect")
}
}     

复选框选择其执行主块(如果取消选择执行其他块)

如何克服我犯错的这个问题

您没有将userDefault值设置为false。你只是把它设置为 true,这就是为什么它总是true.顺便说一句,无需使用synchronize()将您的代码更改为以下内容:

主视图控制器:

@IBAction func CheckInButtonClick(_ sender: UIButton) {
for senderdata in checkINOUT {
senderdata.setImage( UIImage(named:"uncheck1"), for: .normal)
print("uncheck is called")
}
sender.setImage(UIImage(named:"check1"), for: .normal)
UserDefaults.standard.set(true, forKey: "check")
}

下一页视图控制器:

override func viewDidLoad() {
super.viewDidLoad()       
if UserDefaults.standard.bool(forKey: "check") {
print("select")
} else {
print("unselect") {
}
}

因此,请检查要将check值设置为false的位置并使用它。

更新:只需执行此检查:

if UserDefaults.standard.set(true, forKey: "check") {
// Show data
} else {
// segue to another viewController
}

当您将"check"值设置为true一次时,它将始终为true,直到您将"check"值设置为false。 我认为您应该添加一些代码来将"check"设置为false,当用户未选中该复选框时。

最新更新