Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSUserDefaults切换开关不';多任务处理后不要坚持_Ios_Swift_Nsuserdefaults_Tvos - Fatal编程技术网

Ios NSUserDefaults切换开关不';多任务处理后不要坚持

Ios NSUserDefaults切换开关不';多任务处理后不要坚持,ios,swift,nsuserdefaults,tvos,Ios,Swift,Nsuserdefaults,Tvos,这是一个tvOS应用程序。我希望我的应用程序的背景根据使用NSUserDefaults的设置中的切换开关进行更改。切换开关称为“白色背景”,标识符为“白色背景”,默认值为“否” 在我的当前代码中,当用户单击主页、导航到“设置”并点击切换按钮时,它就会工作。但是,如果用户双击home(主页)按钮(将应用程序背景接地),通过task switcher导航到“设置”,然后通过task switcher导航回应用程序,则设置将恢复 这是我的密码: class ViewController: UIView

这是一个tvOS应用程序。我希望我的应用程序的背景根据使用NSUserDefaults的设置中的切换开关进行更改。切换开关称为“白色背景”,标识符为“白色背景”,默认值为“否”

在我的当前代码中,当用户单击主页、导航到“设置”并点击切换按钮时,它就会工作。但是,如果用户双击home(主页)按钮(将应用程序背景接地),通过task switcher导航到“设置”,然后通过task switcher导航回应用程序,则设置将恢复

这是我的密码:

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

不确定这是否是一个简单的修复

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

       uiSettings()
}

不确定这是否是一个简单的修复

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

       uiSettings()
}

除非我弄错了,
setBool(true,…)
setBool(false,…)
应该是另一种方法。您注册默认值的方法毫无意义。注册
让appDefaults=[“whiteBackground”:false]
没有其他内容,没有阅读,也从来没有
valueForKey:
@MartinR我相信我的方法是正确的,因为我希望激活切换,意味着背景是白色的。真的,我不认为这些是必要的,我只是为了尝试所有东西才把它们包括进去。@vadian我已经简化了。我担心registerDefaults会覆盖用户选择的设置,这就是我这样做的原因(即,如果未设置值,则仅将“whiteBackground”默认值注册为
false
)。顾名思义,默认值会一直被考虑,直到用户第一次覆盖为止。从今以后,它就被忽略了。不要在注册前读取值。再一次,这是胡说八道。除非我弄错了,否则请阅读,
setBool(true,…)
setBool(false,…)
应该是另一种方式。您注册默认值的方法是无意义的。注册
让appDefaults=[“whiteBackground”:false]
没有其他内容,没有阅读,也从来没有
valueForKey:
@MartinR我相信我的方法是正确的,因为我希望激活切换,意味着背景是白色的。真的,我不认为这些是必要的,我只是为了尝试所有东西才把它们包括进去。@vadian我已经简化了。我担心registerDefaults会覆盖用户选择的设置,这就是我这样做的原因(即,如果未设置值,则仅将“whiteBackground”默认值注册为
false
)。顾名思义,默认值会一直被考虑,直到用户第一次覆盖为止。从今以后,它就被忽略了。不要在注册前读取值。再一次,这是胡说八道。不幸的是,请阅读,不是那么简单,但我很感激你的回答。我开始认为这只是NSUserDefaults的本质。在更改切换和任务切换到我的应用程序之间,设置可能不会写入存储。不幸的是,没有那么简单,但我很欣赏答案。我开始认为这只是NSUserDefaults的本质。在更改切换和任务切换到“我的应用程序”之间,设置可能不会写入存储器。