我看了几个例子,但在尝试保存文本字段输入并在重新启动应用程序时重新加载时,我无法弄清楚出了什么问题。
我的.m文件中有类似的内容(.h文件只有<UITextViewDelegate>
);
@implementation C4WorkSpace{
UITextView *textField;
C4Button *okButton;
C4Label *savedText;
}
-(void)setup {
//add text field
CGRect textViewFrame = CGRectMake(20.0f, 20, self.canvas.width-40, 124.0f);
textField = [[UITextView alloc] initWithFrame:textViewFrame];
textField.returnKeyType = UIReturnKeyDone;
[textField becomeFirstResponder];
textField.delegate = self;
//textField.hidden=true;
[self.view addSubview:textField];
okButton=[C4Button buttonWithType:ROUNDEDRECT];
[okButton setTitle:@"Save" forState:NORMAL];
okButton.center=self.canvas.center;
[self.canvas addUIElement:okButton];
[okButton runMethod:@"saveDefault" target:self forEvent:TOUCHUPINSIDE];
savedText=[C4Label labelWithText:@"default"];
savedText.center=CGPointMake(self.canvas.center.x, self.canvas.center.y+40);
[self.canvas addLabel:savedText];
}
-(void)saveDefault{
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
[defaults setObject:textField.text forKey:@"userName"];
[defaults synchronize];
C4Log(@"defaults: %@",defaults);
C4Log(@"defaults: %@", [defaults objectForKey:@"userName"]);
savedText.text=textField.text;
}
-(void)viewDidLoad{
NSMutableString *text=[[NSUserDefaults standardUserDefaults] objectForKey:@"userName"];
C4Log(@"loadedText:%s", text);
textField.text=text;
savedText.text=text;
}
@end
我不确定到底出了什么问题,但是当我重新启动应用程序时,loadedText始终是:“¯8*:å”。无论我保存了什么。
答案 0 :(得分:1)
我发现最简单的解决方案是设置
<强> viewDidLoad中
text=[[NSUserDefaults standardUserDefaults] objectForKey:@"userName"];
并在设置
中if (text!=nil) {
textField.text=text;
}
答案 1 :(得分:0)
调用Setup方法的位置?我认为在viewDidLoad中你初始化,但是之前调用的setup方法。 您不保存此信息,因此按钮在初始化之前无法识别或加载信息并设置文本。 在设置方法加载信息
UItextView *k = [UItextView alloc] init];
k.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"userName"];
并看看将会是什么。
更新:
那是错的;
[c4workspace loadInfoFromDefaults];
[c4workspace alloc]init]; (calls viedidload method with load info)
你需要
[c4workspace alloc]init];
[c4workspace loadInfoFromDefaults];
请在创建c4WorkSpace对象的位置发布代码。
更新2:
-(void)setup {
//add text field
CGRect textViewFrame = CGRectMake(20.0f, 20, self.canvas.width-40, 124.0f);
textField = [[UITextView alloc] initWithFrame:textViewFrame];
textField.returnKeyType = UIReturnKeyDone;
[textField becomeFirstResponder];
textField.delegate = self;
//textField.hidden=true;
[self.view addSubview:textField];
okButton=[C4Button buttonWithType:ROUNDEDRECT];
[okButton setTitle:@"Save" forState:NORMAL];
okButton.center=self.canvas.center;
[self.canvas addUIElement:okButton];
[okButton runMethod:@"saveDefault" target:self forEvent:TOUCHUPINSIDE];
savedText=[C4Label labelWithText:@"default"];
savedText.center=CGPointMake(self.canvas.center.x, self.canvas.center.y+40);
[self.canvas addLabel:savedText];
}
- (void) setTextView
{
textField.text=[[NSUserDefaults standardUserDefaults] objectForKey:@"userName"];
savedText.text=[[NSUserDefaults standardUserDefaults] objectForKey:@"userName"];
}
所以你称之为:
C4WorkSpace *c4 = [C4WorkSpace alloc] init];
[c4 setup]
[c4 setTextView];