Это приложение tvOS. Я хочу, чтобы фон моего приложения менялся на основе тумблера в настройках с помощью NSUserDefaults. Тумблер называется «Белый фон», идентификатор «whiteBackground», а по умолчанию «NO».Переключатель переключения NSUserDefaults не работает после многозадачности
С моим текущим кодом он работает, когда пользователь щелкает по дому, переходит к настройкам и переключает переключатель. Однако, если пользователь дважды нажимает кнопку «домой» (фоновая настройка приложения), переходит на «Настройки» с помощью переключателя задач, затем переходит к приложению через переключатель задач, настройка возвращается.
Вот мой код:
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()
}
}
Если не ошибаюсь, 'SetBool (правда, ...)' и 'SetBool (false, ...) 'должно быть наоборот. –
Ваш метод регистрации значений по умолчанию - глупость. Регистрация 'let appDefaults = [" whiteBackground ": false]' ничего больше, нет чтения и ** никогда ** 'valueForKey:' – vadian
@MartinR Я считаю, что у меня это правильно, так как я хочу, чтобы переключатель был активирован до означает, что фон белый. На самом деле, я не думаю, что это даже необходимо, я просто включил их во все попытки. –