сохранение UIViews с userDefaults - PullRequest
0 голосов
/ 10 марта 2019

У меня есть проект, в который я помещаю вид, кнопку, чтобы скрыть вид, один, чтобы показать вид, а затем метку и кнопку (каждый раз, когда вы нажимаете кнопку, вы получаете число, отличное от 0)

@IBAction weak var myView: UIView!
@IBAction Weak var myLabel: UILabel!
 var numbers: [Int] = [1, 7, 9, 6, 0, 3, 10, 45, 2, 83].shuffled()

override func viewDidLoad() {
        super.viewDidLoad()
        myView.isHidden = true
      myLabel.text = "\(UserDefaults.standard.integer(forKey: "Key"))"


    }

 @IBAction func closeView(_ sender: Any) {
myView.isHidden = true
myLabel.text = 0
UserDefaults.standard.removeObject(forKey: "Key")
}

 @IBAction func showView(_ sender: Any) {
myView.isHidden = false
}

 @IBAction func addNumber(_ sender: Any) {
 let oneNum = numbers.shuffled().first

 UserDefaults.standard.set(oneNum, forKey: "Key")
            myLabel.text = "\(UserDefaults.standard.integer(forKey: "Key"))"
}

Я хочу добавить функцию, которая позволяет автоматически отображать myView, если на метке отображается число, отличное от 0. Как я могу это сделать?

1 Ответ

0 голосов
/ 11 марта 2019

Я думаю, что вы хотите что-то вроде этого:

@IBOutlet weak var myView: UIView!
@IBOutlet weak var myLabel: UILabel!
var numbers: [Int] = [1, 7, 9, 6, 0, 3, 10, 45, 2, 83].shuffled()

var currentNumber: Int {
    didSet {
        UserDefaults.standard.set(currentNumber, forKey: "currentNumberKey")
        myLabel.text = "\(currentNumber)"

        // Hide if number is 0, else show
        myView.isHidden = currentNumber == 0
    }
}

private func setNextNumber() {
    currentNumber = numbers.shuffled().first!
}

override func viewDidLoad() {
    super.viewDidLoad()
    currentNumber = UserDefaults.standard.integer(forKey: "currentNumberKey")
}

@IBAction func closeView(_ sender: Any) {
    currentNumber = 0
}

@IBAction func showView(_ sender: Any) {
    myView.isHidden = false
}

@IBAction func addNumber(_ sender: Any) {
    setNextNumber()
}

Установка переменной currentNumber автоматически обновит текст метки и автоматически скроет myView (если currentNumber равен нулю) или покажет myView (если currentNumber не равен нулю).

viewDidLoad восстанавливает состояние. Состояние сохраняется автоматически, если UIViewController исчезает и появляется, поэтому ничего не нужно в viewWillAppear / viewDidAppear и viewWillDisappear / viewDidDisappear .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...