2016-09-03 5 views
1

Это приложение 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() 
    } 
} 
+0

Если не ошибаюсь, 'SetBool (правда, ...)' и 'SetBool (false, ...) 'должно быть наоборот. –

+1

Ваш метод регистрации значений по умолчанию - глупость. Регистрация 'let appDefaults = [" whiteBackground ": false]' ничего больше, нет чтения и ** никогда ** 'valueForKey:' – vadian

+0

@MartinR Я считаю, что у меня это правильно, так как я хочу, чтобы переключатель был активирован до означает, что фон белый. На самом деле, я не думаю, что это даже необходимо, я просто включил их во все попытки. –

ответ

0

Не уверен, если это просто исправление, как это

override func viewWillAppear(animated: Bool) { 
     super.viewWillAppear(animated) 

     uiSettings() 
} 
+0

К сожалению, не так просто, но я ценю ответ. –

+0

Я начинаю думать, что это просто природа NSUserDefaults. Настройки, вероятно, не записываются в хранилище между изменением переключения и переключением задач на мое приложение. –

Смежные вопросы