将用户默认设置添加到暗模式

adding user defaults to dark mode

这是 . What I was wondering was how to add the user defaults for the dark mode throughout the app. Please do not pay attention for the code that says UserDefaults in my last post, I was following a tutorial 的延续,只是复制了他所做的,对用户默认值一无所知。整个黑暗模式在整个应用程序中都能完美运行。我只需要知道如何执行所有用户默认设置。如果您有任何问题,请随时提出。

下面的代码是自定义单元格在设置视图控制器中的样子,用于将应用程序更改为暗模式。一切都很好,而且应该如此。我只需要将用户默认值放入操作中。

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
    }
}

编辑:我正在寻找的是如何将用户默认设置添加到暗模式。所以一旦打开深色模式,然后当你关闭应用程序时,它会保持打开状态,等等

你对 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 甚至使用了它们,但显然从未告诉您如何使用它们,这就证明了这一点.你应该买一本关于 iOS 开发的好书。