簡體   English   中英

快速使用用戶默認值保存復選框按鈕狀態

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM