我做了彻底的研究,但似乎没有找到我正在寻找的答案。希望有人可以提供帮助。
我的应用程序中有多个视图控制器,其中一个是“选项”视图,用户可以通过分段控件更改某些设置,如背景颜色。单击后,用户单击按钮将其首选项颜色保存到NSUserDefaults。这非常有效,下次应用程序打开时,仍会选择正确的颜色。但仅限于选项视图控制器。
如何在我的其他视图控制器中加载所选的背景颜色?我似乎没有通过将其实现到我的其他视图的ViewDidLoad来运行它,就像我在选项视图中所做的那样(见下文)。
我在options.m中的代码如下:
- (IBAction)changeColor {
switch (colorControl.selectedSegmentIndex) {
case 0:
[colorView setBackgroundColor:[UIColor redColor]];
break;
case 1:
[colorView setBackgroundColor:[UIColor blackColor]];
break;
case 2:
[colorView setBackgroundColor:[UIColor brownColor]];
break;
default:
break;
}
}
- (IBAction)saveDefaultColor {
int defaultColorInteger = colorControl.selectedSegmentIndex;
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setInteger:defaultColorInteger forKey:@"defaultColor"];
[userDefaults synchronize];
}
以上是控制和保存按钮。在我的ViewDidLoad中,我包括以下内容:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
int defaultColorInteger = [userDefaults integerForKey:@"defaultColor"];
[colorControl setSelectedSegmentIndex:defaultColorInteger];
switch (colorControl.selectedSegmentIndex) {
case 0:
[colorView setBackgroundColor:[UIColor redColor]];
break;
case 1:
[colorView setBackgroundColor:[UIColor blackColor]];
break;
case 2:
[colorView setBackgroundColor:[UIColor brownColor]];
break;
default:
break;
这完全符合我的要求,但我无法在其他视图中使用它。 任何人都可以帮我解决我似乎失踪的事情吗?非常感谢
答案 0 :(得分:2)
我认为您需要检查其他视图中的键值,因为NSUserDefaults不是为单个视图保存整个应用程序的数据。可能是你没有正确地放钥匙。
答案 1 :(得分:0)
在任何ViewController中创建NSUserDefault对象,并将键值对设置为userDefault对象中的对象。
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
if (standardUserDefaults)
{
[standardUserDefaults setObject:@"stringUserName" forKey:@"UserName"];
[standardUserDefaults setObject:@"idfv" forKey:@"DeviceCode"];
[standardUserDefaults synchronize];
}
然后要从第二个ViewController访问它,你必须在第二个ViewController中编写下面的代码
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSString *userName;
NSString *deviceCode;
if (standardUserDefaults)
{
userName = (NSString*)[standardUserDefaults objectForKey:@"UserName"];
deviceCode = (NSString*)[standardUserDefaults objectForKey:@"DeviceCode"];
}
希望这对你有所帮助。