【发布时间】:2013-08-03 21:01:48
【问题描述】:
我有一个主视图控制器、一个“更改背景颜色”视图控制器和一个详细视图控制器。
当用户通过更改背景颜色视图控制器更改背景颜色时,我会执行以下操作:
NSData *colorData = [NSKeyedArchiver archivedDataWithRootObject:currentColor];
[[NSUserDefaults standardUserDefaults] setObject:colorData forKey:@"backgroundColor"];
//currentColor is specified by user
这通过以下方式更新到其他视图控制器:
NSData *colorData = [[NSUserDefaults standardUserDefaults] objectForKey:@"backgroundColor"];
UIColor *color = [NSKeyedUnarchiver unarchiveObjectWithData:colorData];
self.view.backgroundColor = color;
我遇到的问题是主视图控制器首先加载。目前,当应用程序第一次加载时,所有内容都有一个白屏。我的问题是:我将如何更改它,以便应用程序在每个视图控制器上加载绿色,并且在用户指定颜色后,它停止显示绿色并开始显示指定的颜色?
我尝试使用 viewDidLoad 进行此操作,但这不起作用,因为它只会覆盖 NSUserDefaults 设置。
【问题讨论】:
-
每次更改后你记得
synchronize你的NSUserDefaults吗? -
不,我没有这样做。那是什么?
-
将您的更改写入磁盘。
-
EXC_BREAKPOINT?尝试重新启动 Xcode?重启设备?牺牲一只鸡?有点不对劲。
-
哈哈,因为我使用 UIColor 而不是 NSData。 NSUserDefaults 不接受 UIColor
标签: ios objective-c cocoa-touch nsuserdefaults