0

我有一个主视图控制器、一个“更改背景颜色”视图控制器和一个详细视图控制器。

当用户通过更改背景颜色视图控制器更改背景颜色时,我执行以下操作:

 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设置。

4

2 回答 2

3

-[NSUserDefaults registerDefaults:]是你想要的东西。你用你想成为“默认值”的值来调用它,然后其他调用者将获得这些值。参考这里。 您会希望它在应用程序生命周期的早期运行,可能在– application:didFinishLaunchingWithOptions:

于 2013-08-03T21:04:41.370 回答
1

至于您打算每次将背景设置为绿色,直到用户在您的颜色选择视图中选择一种颜色,您是否希望每次应用程序加载到前台或每次启动应用程序时都这样做?我想你可以在你的 IB 文件中设置它(如果你正在使用 IB)或者viewDidLoad应该可以工作。

如果我理解您正在尝试正确执行的操作,您可以在其中创建另一个项目NSUserDefaults来跟踪用户何时进行了颜色选择,然后您只需在viewDidLoad将背景设置为所选颜色之前检查此标志即可。但是,我问您何时想这样做的原因是要知道何时重置该标志。

于 2013-08-03T21:16:59.217 回答