如何在iOS中保存用户复选标记选择

时间:2018-06-29 16:56:45

标签: ios swift uitableview

我当前正在尝试在iOS中保存用户选中标记的选择。我有一个定制的空复选框和一个带有复选标记的框。单击时我已经进行了更改,但是我不确定在关闭应用程序后如何将复选标记保存为用户默认设置。我知道如何对文本和滑块按钮执行此操作,但是我无法弄清楚这些图像。我正在使用Swift编程,非常感谢您的帮助。我已经有一些代码设置,但是在这一切上我可能是错的。

import UIKit

class TableViewChallengeTrackerTableViewController: UITableViewController {
    //checkboxes
    @IBOutlet weak var checkBoxButton1: UIButton!

    var saveCheckBoxes = UserDefaults.standard

    //saving keys
    let checkBoxSave01 = "checkBoxSave01"

    override func viewDidLoad() {
        super.viewDidLoad()

        //check box #1 images
        checkBoxButton1.setImage(UIImage(named:"greyUnchecked"), for: .normal)
        checkBoxButton1.setImage(UIImage(named:"greyChecked"), for: .selected)

         //loading the saved check box
        if saveCheckBoxes.object(forKey: checkBoxSave01) != nil{

        }
    }

    //check box changed/check box had heptic/saving user selection
    let impact = UIImpactFeedbackGenerator(style: UIImpactFeedbackStyle.medium)

    @IBAction func checkBoxTapped(_ sender: UIButton) {
        saveCheckBoxes.set(sender.currentImage, forKey: checkBoxSave01)

        impact.impactOccurred()
        UIView.animate(withDuration: 0.0, delay: 0.0, options: .curveLinear, animations: {
            sender.transform = CGAffineTransform(scaleX: 0.0, y: 0.0)

        }) { (success) in
            UIView.animate(withDuration: 0.0, delay: 0.0, options: .curveLinear, animations: {
                sender.isSelected = !sender.isSelected
                sender.transform = .identity
            }, completion: nil)
        }
    }
}

2 个答案:

答案 0 :(得分:1)

将值保存为布尔值,而不是图像。然后,当您加载该视图控制器时,从默认值获取该布尔值。如果为真,请选中该复选框。如果为假,则不要选中该复选框。

UserDefaults.standard.set(true, forKey: "checkBoxSave01")

稍后尝试设置复选框时,可以在viewDidLoad中执行以下操作:

if UserDefaults.standard.bool(forKey: "checkBoxSave01") == true {
    // Configure the checkbox as checked
} else {
    // Configure the checkbox as unchecked
}
如果在该键处设置的值为true,则

bool(forKey:)将返回true。如果该值设置为false或该键没有值,它将返回false。

答案 1 :(得分:0)

这可能会对您有所帮助。您可以轻松地对其进行修改以满足您的需求。

enum UserDefaultsKeys : String {
    case someBox
    case anotherBox
}

extension UserDefaults{

    func setSomeBox(value : Bool){
        set(value, forKey: UserDefaultsKeys.someBox.rawValue)
    }

    func getSomeBox() -> Bool {
        return bool(forKey: UserDefaultsKeys.someBox.rawValue)
    }

    func setAnotherBox(value : Bool){
        set(value, forKey: UserDefaultsKeys.anotherBox.rawValue)
    }

    func GetAnotherBox() -> Bool {
        return bool(forKey: UserDefaultsKeys.anotherBox.rawValue)
    }
}