我按下一个保存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];
答案 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];