将用户默认值添加到黑暗模式
这是一个较早的职位的延续。 我想知道的是如何在整个应用程序中添加黑暗模式的用户默认值。 请不要留意在上一篇文章中提到UserDefaults的代码,我正在关注一个教程 ,只是复制了他所做的一切,对于User Defaults什么都不了解。 整个黑暗模式运行在整个应用程序的美丽。 我只需要知道如何做所有的用户默认。 如果你有任何问题随时问。
下面的代码是自定义单元格下面是在设置视图控制器中,将应用程序更改为黑暗模式。 一切都很好,而且应该如此。 我只需要把用户的默认值放入操作。
import UIKit class DarkModeTableViewCell: UITableViewCell { var DarkisOn = Bool() let userDefaults = UserDefaults.standard @IBOutlet var darkModeSwitchOutlet: UISwitch! override func awakeFromNib() { super.awakeFromNib() NotificationCenter.default.addObserver(self, selector: #selector(darkModeEnabled(_:)), name: .darkModeEnabled, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(darkModeDisabled(_:)), name: .darkModeDisabled, object: nil) } override func setSelected(_ selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) // Configure the view for the selected state } @IBAction func darkModeSwitched(_ sender: Any) { if darkModeSwitchOutlet.isOn == true { //enable dark mode DarkisOn = true //add a userDefault here so that the app will stay in dark mode NotificationCenter.default.post(name: .darkModeEnabled, object: nil) } else { //enable light mode DarkisOn = false //add a userDefault here so that the app will stay in light mode NotificationCenter.default.post(name: .darkModeDisabled, object: nil) } } @objc private func darkModeEnabled(_ notification: Notification) { DarkModeTableViewCellChange.instance.set(for: self) textLabel?.textColor = UIColor.white } @objc private func darkModeDisabled(_ notification: Notification) { LightModeTableViewCellChange.instance.set(for: self) textLabel?.textColor = UIColor.black } }
编辑:我在找什么是如何将用户默认添加到黑暗模式。 所以一旦开启了黑暗模式,那么当你closures应用程序时,它将继续等等。
你用NSUserDefaults做的每件事都是存储设置并检索它们。 你会存储你的用户正在使用什么主题。
所以在改变你的主题的时候做一些这样的事情(在你之前的问题中你已经做了这样的事情):
let defaults = UserDefaults.standard // Do something like this when using changing your theme to dark mode. defaults.set(true, "darkModeEnabled") // Do something like this when changing your theme to your standard one defaults.set(false, "darkModeEnabled")
在可视化视图控制器的viewWillAppear
中,只需检查在UserDefaults中指定的键的值。
/// Check if the user is using dark mode in viewDidLoad. override func viewWillAppear() { super.viewDidLoad() let darkModeEnabled = defaults.bool(forKey: "darkModeEnabled") if darkModeEnabled { // Apply your dark theme } else { // Apply your normal theme. } }
这样你的应用程序的视图将控制器加载时将有正确的主题,并且用户将加载应用程序时看到正确的。
推荐阅读: UserDefaults
顺便提一下,YouTube上的教程系列对于初学者来说显然不够好,因为它可以通过提及UserDefaults甚至使用它们的事实来certificate,但显然从未告诉您如何使用它们。 你应该只是得到一本关于iOS开发的好书。