0

ユーザーが整数を入力すると、ユーザーが入力した値でメソッドが呼び出される 2 つの UITextFields を持つアプリがあります。しかし、アプリを完全に閉じると、値が削除されます。ユーザーが閉じたときに入力した値を保存し、アプリを再度開いたときにロードするように変更したいと考えています。私はこれを NSUserDefault で試してみましたが、(保存と読み込みボタンで) うまくいきましたが、ボタンを押さずに自動的に作成したいと思います。他の人が AppDelegate.m の基本的なメソッドでやっているのを見ましたが、私はそれについて何も知らないので、まったくわかりませんでした。

オンラインで多くのチュートリアルを見ましたが、どれも理解できませんでした。助けてください。詳細な回答をお願いします:)

4

3 に答える 3

1

保存ボタンでうまくいきましたよね?次に、UITextField のテキスト変更イベントに同じコードを次のように適用します。

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

これは、フィールド内のテキストが変更されると、「txtFieldDidChange」のコードが実行されることを意味します。これは、NSUSerDefaults に書き込む場所です。

于 2013-10-25T15:43:45.190 に答える
1

を使いNSUserDefaults続けてください。やりたいことに対するこれ以上のアプローチはありません。

あなたの場合、 にデリゲートを設定するだけでUITextField、値が変更されるたびに に保存されNSUserDefaultsます。このように、ボタンはなくNSUserDefaults、常に最後の値が含まれます。

于 2013-10-25T15:43:17.763 に答える
0

あなたはほとんどそこにいます。2 つの関数を定義するだけです。1 つは 2 つの文字列を保存し、もう 1 つはそれらをロードします。

    -(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、(ユーザーが textFields の 1 つを変更したときに) コールバック内で呼び出し、textFieldsloadTextFieldValuesを作成した直後に呼び出します。

于 2013-10-25T15:51:57.477 に答える