[英]How to save the state of UISegmentedControl in Swift3 with userDefaults
[英]Save checkbox button state using userdefaults in swift
視圖控制器具有兩個復選框按鈕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")
}
}
復選框,如果取消選擇執行其他塊,則選擇其執行主塊
如何克服我犯錯的問題
您沒有將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
}
一次將“ check”值設置為true時,它將始終為true,直到將“ check”值設置為false。 我認為您應該添加一些代碼,以在用戶未選中復選框時將“ check”設置為false。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.