为什么我的nsuserdefaults文本没有立即显示?

时间:2013-08-25 17:18:57

标签: iphone ios objective-c uilabel nsuserdefaults

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

Viewcontroller 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 个答案:

答案 0 :(得分:0)

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

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

编辑:实际上并不需要

答案 1 :(得分:0)

好的,我想出了我的问题,为什么这对我的导航栏起作用,而不是我的uilabel.You必须在切换视图控制器的代码之前添加nsuserdefaults。

答案 2 :(得分:0)

试试这个:

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

然后

[[NSUserDefaults standardUserDefaults]ValueforKey:@"Text"];

答案 3 :(得分:-1)

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

[userDefaults synchronize];