【发布时间】:2014-11-16 03:45:24
【问题描述】:
从下面的屏幕截图中可以看出,我有一个倒计时时钟,我允许用户更改 UI 上按钮和标签的颜色。我的问题是,我希望用户能够保存他们的颜色设置,但是我无法弄清楚放置和顺序。我知道这个问题已经在这里得到了回答:Saving UIColor to and loading from NSUserDefaults。
但是,我想我没有“明白”,需要额外的帮助。所以下面截图中的每种颜色都有这样的编码:
-(IBAction)red
{
[_enterDateOutlet setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[_backButtonOutlet setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
_yearsLabel.textColor = [UIColor redColor];
_daysLabel.textColor = [UIColor redColor];
_hoursLabel.textColor = [UIColor redColor];
_minLabel.textColor = [UIColor redColor];
_secLabel.textColor = [UIColor redColor];
minuteProgessView.theme.labelColor = [UIColor redColor];
secondProgessView.theme.labelColor = [UIColor redColor];
hourProgessView.theme.labelColor = [UIColor redColor];
dayProgessView.theme.labelColor = [UIColor redColor];
yearProgessView.theme.labelColor = [UIColor redColor];
}
我的问题是我是否将此代码放在每个颜色操作按钮的末尾(我有 7 种颜色)?
NSData *colorData = [NSKeyedArchiver archivedDataWithRootObject: color];
[[NSUserDefaults standardUserDefaults] setObject:colorData forKey:@"color1"];
因为这是我认为我应该做的,然后我将它添加到我的 View Did Load 方法中:
NSData *colorData = [[NSUserDefaults standardUserDefaults] objectForKey:@"myColor"];
UIColor *color = [NSKeyedUnarchiver unarchiveObjectWithData:colorData];
结果是红色错误,因为“颜色”是未声明的标识符。
非常感谢您的帮助,我是新手,过去 2 个小时一直在尝试解决这个问题。谢谢你。
【问题讨论】:
-
当使用设置颜色是所有标签的颜色?您不必只保存设置的颜色而不是多种颜色,否则我错过了什么?
-
@Yan 它将设置所有颜色。主要原因是如果用户选择的背景照片会导致倒计时被蒙蔽,他们可以更改颜色以使所有内容重新显示。因此,如果用户选择了背景照片并且黄色最适合他们,并且他们选择了黄色,我希望它可以保存他们的选择,以便下次打开应用程序时使用。
-
所以你只需要保存选择的颜色,当用户下次打开应用程序时你会检索它并设置它。你不保存其余的颜色
标签: objective-c xcode save uicolor