-1

我按下一个保存 nuserdefaults 文本的按钮,然后该按钮将我带到下一个视图控制器(视图控制器 2)。然后第二个控制器中的 UILabel 读取文本。但是,我总是必须按两次按钮才能让 View Controller 2 中的 UILabel 读取 nsuserdefault 文本。这很奇怪,因为我在第二个视图控制器中的导航标题栏可以立即读取 nsuserdefaults,而无需按下按钮两次以上。

视图控制器 1

  NSString *calories = @"Test:1, 2, 3";
 [[NSUserDefaults standardUserDefaults]
  setObject:calories forKey:@"Text"];

视图控制器 2

 clabel=[[UILabel alloc] initWithFrame:CGRectMake(0,30, 320, 30)];
 clabel.text=[[NSUserDefaults standardUserDefaults]stringForKey:@"Text"];
 clabel.textColor=[UIColor blackColor];
 clabel.font = [UIFont fontWithName:@"Helvetica-Bold" size: 12.0];
 clabel.backgroundColor =[UIColor clearColor];
 clabel.adjustsFontSizeToFitWidth=YES;
 [self.view addSubview:clabel];
4

4 回答 4

0

您需要同步用户默认值以将它们写入存储等:

NSString *calories = @"Test:1, 2, 3";
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:calories forKey:@"Text"];
[userDefaults synchronize];

编辑:实际上不需要

于 2013-08-25T17:24:03.317 回答
0

试试这个:

[[NSUserDefaults standardUserDefaults]
  setValue:calories forKey:@"Text"];

然后

[[NSUserDefaults standardUserDefaults]ValueforKey:@"Text"];
于 2013-08-26T07:41:28.577 回答
0

好的,我找到了我的问题,为什么这适用于我的导航栏,但不适用于我的 uilabel。您必须在切换视图控制器的代码之前添加 nsuserdefaults。

于 2013-08-25T17:45:11.647 回答
-1

您忘记了下面的代码行。将数据放入 userdefaults 后,您需要编写同步。

[userDefaults synchronize];
于 2013-08-26T09:29:28.920 回答