我应该从哪里加载用户默认值的数据?

问题描述 投票:1回答:2

我的应用程序实现了一个导航栏:它有一个主视图和一个设置视图。在设置视图中,我使用UserDefaults保存了一些用户的首选项。然后,当我返回主视图时,不会出现新的首选项。它只在我重新打开应用程序后出现。我在ViewController的viewDidLoad方法中加载用户默认值。从设置视图返回到主视图后,看起来不会再次调用viewDidLoad方法。那么我应该从哪里加载来自用户默认值的数据呢?

以下是我加载首选项的方法:

override func viewDidLoad() {
    super.viewDidLoad()
    numberOfPeople = defaults.double(forKey: "numberOfPeopleDefault")
    tipPercentage = defaults.double(forKey: "tipPercentageDefault") / 100.0
}
ios swift
2个回答
5
投票

你可以在viewWillAppear中调整变量(每次出现ViewController时调用),例如:

override func viewWillAppear(_ animated: Bool) {
  super.viewWillAppear(animated)

  numberOfPeople = defaults.double(forKey: "numberOfPeopleDefault")
  tipPercentage = defaults.double(forKey: "tipPercentageDefault") / 100.0
}

0
投票

我想你会发现在为你的变量使用didSet时有一些价值。这是一个你可能会觉得有用的例子。

class vc: UIViewController {
  var numpplLabel: UILabel!
  var tipLabel: UILabel!

  var numberOfPeople: Double = 0 {
    didSet {
      guard oldValue != numberOfPeople else { return }
      numpplLabel.text = "\(numberOfPeople) ppl"
    }
  }

  var tipPercentage: Double = 0.2 {
    didSet {
      guard oldValue != tipPercentage else { return }
      tipLabel.text = "\(tip)% tip"
    }
  }

  var tip: Double { return tipPercentage*100 }

  override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    numberOfPeople = defaults.double(forKey: "numberOfPeopleDefault")
    tipPercentage = defaults.double(forKey: "tipPercentageDefault")
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.