Как сохранить выбор галочки пользователя в iOS - PullRequest
0 голосов
/ 29 июня 2018

В настоящее время я пытаюсь сохранить выбор отметки пользователя в 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 голосов
/ 29 июня 2018

Сохраните значение как логическое значение, а не как изображение. Затем, когда вы загрузите этот контроллер представления, получите это логическое значение из значений по умолчанию. Если это правда, установите флажок. Если значение равно false, не устанавливайте флажок.

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
}

bool(forKey:) вернет true, если значение, установленное для этого ключа, равно true. Он вернет false, если значение было установлено в false или если для этого ключа нет значения.

0 голосов
/ 29 июня 2018

Это может помочь вам. И вы можете легко изменить его в соответствии с вашими потребностями.

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)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...