View Controller 有两个复选框按钮 1.检查输入 2. checkout
我将 checkIN [复选框按钮] 状态保存在用户默认值中,工作正常,但是当我在 Nextviewcontroller 中使用该 userdefaults 键时,它总是显示 true 而不是遇到 false block 这是代码
在主视图 Controller 中
@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()
}
下一个 View Controller
override func viewDidLoad() {
super.viewDidLoad()
{
let prefs:UserDefaults = UserDefaults.standard
if prefs.bool(forKey: "check") ==true
{
print("select")
} else {
print("unselect")
}
}
复选框选择它的执行主 block ,如果取消选择执行其他 block
如何克服这个我做错的问题
最佳答案
您没有将 userDefault
值设置为 false
。您只是将它设置为 true,这就是为什么它总是 true
。顺便说一句,无需使用 synchronize()
而是将您的代码更改为以下内容:
主视图 Controller :
@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")
}
下一个 View Controller :
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
}
关于ios - 在 swift 中使用 userdefaults 保存复选框按钮状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46433211/