从NSUserDefaults中的值更改主视图控制器背景颜色

时间:2014-12-09 22:38:55

标签: swift nsuserdefaults uibackgroundcolor

我有两个视图控制器,一个是主视图控制器,第二个是设置视图控制器。我在设置VC上有按钮,用于更改设置VC和主设置的背景颜色。它将颜色存储在NSUserDefaults中,以便我可以在主视图控制器中访问它。以下是设置VC的代码:

let defaults = NSUserDefaults.standardUserDefaults()

@IBAction func red(sender: AnyObject) {
    view.backgroundColor = (UIColor.redColor())
    NSUserDefaults.standardUserDefaults().setObject("red", forKey: "backColor")
    NSUserDefaults.standardUserDefaults().synchronize()

}
@IBAction func green(sender: AnyObject) {
    view.backgroundColor = (UIColor.greenColor())
    NSUserDefaults.standardUserDefaults().setObject("green", forKey: "backColor")
    NSUserDefaults.standardUserDefaults().synchronize()

}
@IBAction func black(sender: AnyObject) {
    view.backgroundColor = (UIColor.blackColor())
    NSUserDefaults.standardUserDefaults().setObject("black", forKey: "backColor")
    NSUserDefaults.standardUserDefaults().synchronize()

我是Swift的新手,并且不知道如何根据按下的按钮存储在NSUserDefaults中的内容来更改/保存主VC的背景颜色。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

在主视图控制器的viewWillAppear中,从NSUserDefaults读取值,并根据字符串的值设置视图的backgroundColor属性:

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

    let defaults = NSUserDefaults.standardUserDefaults()

    // Start color off with a default value       
    var color = UIColor.grayColor()

    if let backColor = defaults.objectForKey("backColor") as? String {
        switch backColor {
            case "red": color = UIColor.redColor()
            case "green": color = UIColor.greenColor()
            case "blue": color = UIColor.blueColor()
            case "black": color = UIColor.blackColor()
            default: break
        }
    }

    view.backgroundColor = color
}