2013-10-25 80 views
0

我有一個應用程序和兩個UITextFields,用戶輸入一個整數,然後用用戶輸入的值調用一個方法。但是當我完全關閉應用程序時,這些值將被刪除。我想更改它以保存用戶在關閉時輸入的值,並在應用程序重新打開時加載它。我用NSUserDefault試過,並且它工作正常(使用保存和加載按鈕),但我希望它自動生成,而不必按任何按鈕。我看到一些其他人使用AppDelegate.m中的基本方法來做這件事,但我對此一無所知,因此我完全不理解它。使用NSUserDefaults自動保存值

我看到很多在線教程,但我不明白其中任何一個,請大家幫幫忙,並給予了詳細的解答,謝謝:)

+1

你可以把值的變化時被調用的方法嗎? – Brams

回答

1

繼續使用NSUserDefaults,有你想要做什麼沒有更好的辦法。

在你的情況下,只需在UITextField上設置一個代理,並且每次更改值時,都將其保存在NSUserDefaults中。這樣,你將不會有任何按鈕,你的NSUserDefaults將始終包含最後一個值。

1

你得到它與一個保存按鈕的權利?然後,只需申請在的UITextField像這樣的文本改變事件的相同代碼:

[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; 

這意味着當字段中的文本改變「txtFieldDidChange」的代碼運行。這是你寫給NSUSerDefaults的地方

0

你快到了。只需定義兩個功能,一個保存你的兩個字符串,另一個加載它們。

-(void)saveTextFieldValues() { 
     NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 

     // saving 
     [prefs setObject:self.firstTextField.text forKey:@"FirstTextFieldKey"]; 
     [prefs setObject:self.secondTextField.text forKey:@"SecondTextFieldKey"]; 

     [prefs synchronize]; 
    } 

-(void)loadTextFieldValues() { 
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 

    //Load textField texts 

    if ([prefs stringForKey:@"FirstTextFieldKey"]): 
     self.firstTextField.text = [prefs stringForKey:@"FirstTextFieldKey"]; 

    if ([prefs stringForKey:@"SecondTextFieldKey"]): 
     self.secondTextField.text = [prefs stringForKey:@"SecondTextFieldKey"]; 

} 

然後調用saveTextFieldValues你的回調中(當用戶改變文本框的一個),並調用loadTextFieldValues創建文本框之後。