如何使用用户默认值保存交换机



我有一个开关,当设置为";在"On";,激活DarkMode,并且当设置为"暗模式"时;"关";,停用DarkMode。我的问题是开关显示为";关闭";当离开应用程序时,如果它被设置为"0";打开";。我的开关代码在下面,不幸的是,我不知道该写什么,这样应用程序就会记住开关状态,你能帮我吗?

import UIKit
class ViewController: UIViewController {
@IBOutlet weak var outletSwitch: UISwitch!
@IBOutlet weak var intelligenceLabel: UILabel!
@IBOutlet weak var defaultLabel: UILabel!

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func darkAction(_ sender: Any) {
if outletSwitch.isOn == true{
view.backgroundColor = UIColor.black
intelligenceLabel.textColor = UIColor.white
defaultLabel.textColor = UIColor.white
intelligenceLabel.text = "On"
}else{
view.backgroundColor = UIColor.white
intelligenceLabel.textColor = UIColor.black
defaultLabel.textColor = UIColor.black
intelligenceLabel.text = "Off"
}
}

}

设置用户默认值,如下所示:

if outletSwitch.isOn == true{
//set to true
UserDefaults.standard.set(true, forKey: “outletSwitch”)
}
else{
//set to false
UserDefaults.standard.set(false, forKey: “outletSwitch”)
}

当你想读回数值时:

let status = UserDefaults.standard.bool(forKey: “outletSwitch”) 

根据进行空检查

您想要保存outletSwitch.isOn的值。你可以这样做:

@IBAction func darkAction(_ sender: Any) {
if outletSwitch.isOn == true{
view.backgroundColor = UIColor.black
intelligenceLabel.textColor = UIColor.white
defaultLabel.textColor = UIColor.white
intelligenceLabel.text = "On"
}else{
view.backgroundColor = UIColor.white
intelligenceLabel.textColor = UIColor.black
defaultLabel.textColor = UIColor.black
intelligenceLabel.text = "Off"
}
UserDefaults.standard.set(outletSwitch.isOn, forKey: "darkAction")
}

要在加载视图时恢复状态,可以执行以下操作:

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
outletSwitch.isOn = UserDefaults.standard.bool(forKey: "darkAction")
}

这很简单。您只需要将一个值与一个键一起保存到UserDefaults中。

let defaults = UserDefaults.standart
/// saves your current switch status to key "darkmode"
defaults.set(outletSwitch.isOn, forKey: "darkmode")
/// gets your saved value from UserDefaults for certain key
let state = defaults.bool(forKey: "dark mode")

你也可以看看这个链接

你也可以使用Pods,比如SwiftKeychainWrapper

最新更新