2015-04-06 81 views
-4

我有一個UITextField作爲子視圖。以編程方式保存UITextField數據

- (void)viewDidLoad { 

    [super viewDidLoad]; 

textField = [[UITextField alloc] initWithFrame:CGRectMake(21, 21, 159, 37)]; 
textField.borderStyle = UITextBorderStyleNone; 
textField.font = [UIFont systemFontOfSize:15]; 
textField.placeholder = @"name"; 
textField.autocorrectionType = UITextAutocorrectionTypeNo; 
textField.keyboardType = UIKeyboardTypeDefault; 
textField.returnKeyType = UIReturnKeyDone; 
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 
textField.textColor = [UIColor whiteColor]; 
textField.keyboardAppearance = UIKeyboardAppearanceDark; 
textField.delegate = (id) self; 
textField.autocapitalizationType = UITextAutocapitalizationTypeNone; 
[textField addTarget:self action:@selector(saveData:) forControlEvents:UIControlEventEditingDidEnd]; 

[self.view addSubview:textField]; 

} 

-(void)saveData:(id)sender { 

    NSString *savestring = textField.text; 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:savestring forKey:@"savedstring"]; 
    [defaults synchronize];   
} 

要加載數據(viewDidLoad中)

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSString *loadstring = [defaults objectForKey:@"savedstring"]; 
    [textField setText:loadstring]; 

現在的問題是,它不保存和加載的UITextField的文本。

+0

您節省了textfield作爲一個屬性? – marosoaie 2015-04-06 08:59:29

+2

我注意到你正在調用saveData :()方法在textfield的 UIControlEventEditingDidEnd事件中,這個事件調用是否正確? – Samir 2015-04-06 09:06:07

+0

正如Samir所說,檢查該事件是否正在調用,如果是,則檢查textField.text是否包含任何字符串值或其空值。 – Mrunal 2015-04-06 09:18:20

回答

0

首先,您需要在Textfield中輸入一些字符串並按下回車鍵,以便它有機會調用您的「saveData」方法並將值存儲在NSUserDefaults中。只需檢查所有值。

0

我找到了一個解決方案:

textField.text = [defaults objectForKey:@"savedstring"]; 

謝謝大家對你的答案

+0

認真嗎?你已經在你的問題中寫過同一行。 這不是很酷的哥們。 是的,你可能是在賦值文本字段之前分配@「savedstring」的值。 – Samir 2015-04-06 10:20:48

0

「addSubview」 這種方法寫後加載數據的方法...

[self.view addSubview:textField]; 

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSString *loadstring = [defaults objectForKey:@"savedstring"]; 
[textField setText:loadstring]; 
相關問題