视图控制器有两个复选框按钮 1.chekcIn 2.checkOut
我在用户默认值中保存了checkIN [复选框按钮]状态,工作正常,但是当我在Nextviewcontroller中使用该userdefaults键时,它总是显示为true而没有运行到false块 这是代码
inHomeview控制器
@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()
}
nextviewcontroller
override func viewDidLoad() {
super.viewDidLoad()
{
let prefs:UserDefaults = UserDefaults.standard
if prefs.bool(forKey: "check") ==true
{
print("select")
} else {
print("unselect")
}
}
如果取消选择执行else块,复选框选择其执行主块
如何在我错误的地方解决这个问题
答案 0 :(得分:1)
您未将userDefault
值设为false
。你只将它设置为true,这就是为什么它总是true
。并且顺便说一下,不需要使用synchronize()
将代码更改为以下代码:
HomeViewController:
@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")
}
NextViewController:
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
}
答案 1 :(得分:0)
当您设置&#34;检查&#34;值为真一次,它将永远为真,直到你设置&#34;检查&#34;值为false。 我认为你应该添加一些代码来设置&#34;检查&#34;当用户没有选中复选框时,为false。