Dies ist eine tvOS-Anwendung. Ich möchte, dass sich der Hintergrund meiner Anwendung basierend auf einem Wechselschalter in Einstellungen mit NSUserDefaults ändert. Der Kippschalter heißt "Weißer Hintergrund", der Bezeichner ist "whiteBackground" und der Standardwert ist "NO".NSUserDefaults Kippschalter klebt nicht nach Multitasking
Mit meinem aktuellen Code funktioniert es, wenn der Benutzer nach Hause klickt, navigiert zu "Einstellungen" und tippt auf den Schalter. Wenn der Benutzer jedoch auf die Home-Schaltfläche doppelklickt (Hintergrund der App), über den Task-Switcher zu "Einstellungen" navigiert und dann über den Task-Switcher zurück zur App navigiert, wird die Einstellung zurückgesetzt.
Hier ist mein Code:
class ViewController: UIViewController {
func registerDefaultSettings() {
var appDefaults = ["whiteBackground": false]
NSUserDefaults.standardUserDefaults().registerDefaults(appDefaults)
}
override func viewDidLoad() {
super.viewDidLoad()
registerDefaultSettings()
uiSettings()
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.uiSettings), name: UIApplicationWillEnterForegroundNotification, object: nil)
}
func uiSettings() {
let defaults = NSUserDefaults.standardUserDefaults()
if defaults.boolForKey("whiteBackground") {
view.backgroundColor = UIColor.whiteColor()
} else {
view.backgroundColor = UIColor.blackColor()
}
}
Wenn ich mich nicht irre, einfach ist das 'setBool (true, ...)' und 'setBool (falsch, ...) 'sollte andersherum sein. –
Ihre Methode zum Registrieren von Standardwerten ist Unsinn. Registrieren 'let appDefaults = [" whiteBackground ": false]' nichts anderes, kein Lesen und ** nie ** 'valueForKey:' – vadian
@MartinR Ich glaube, wie ich es habe, ist korrekt, wie ich den Schalter aktiviert werden soll Der Hintergrund ist weiß. Wirklich, ich denke nicht, dass diese sogar notwendig sind, ich habe sie einfach eingeschlossen, um alles zu versuchen. –