我有两个视图控制器,一个是主视图控制器,第二个是设置视图控制器。我在设置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的背景颜色。有人可以帮助我吗?
答案 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
}