0

ステッパーを使用して myLabel の値を設定する以下のコードがあります。値を NSUserDefaults に保存するように設定しました。

1) ステッパーの値を、ラベルに入力した値と同じ値に設定する必要もあります。誰かがこれを行う方法をアドバイスできますか? (これがあるべきだと思うコードにコメントを追加しました。)

2) saveString をロードする前に実際に設定されていることも確認し、そうでない場合はデフォルト値を設定したいと思います。また、これを達成する方法を教えてください。

ありがとう。

- (void)viewWillAppear:(BOOL)animated
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString *loadString = [defaults objectForKey:@"saveString"];
    self.myLabel.text = loadString;
// Need to set the stepper value to that in loadString
}

- (IBAction)stepChanged:(id)sender {
    NSString *saveString = [NSString stringWithFormat:@"%d",
                            [[NSNumber numberWithDouble:[(UIStepper *)sender value]] intValue]];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:saveString forKey:@"saveString"];
    [defaults synchronize];
    self.myLabel.text = saveString;
}

次のようにコードを更新しました:-

- (void)viewWillAppear:(BOOL)animated
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSNumber *loadNumber = [defaults objectForKey:@"saveNumber"];
    self.myLabel.text = [NSString stringWithFormat:@"%@",loadNumber];
    UIStepper *stepper = [[UIStepper alloc] init];
    stepper.value = [NSNumber numberWithDouble:loadNumber];
}

- (IBAction)stepChanged:(id)sender {
    NSNumber *saveNumber = [NSNumber numberWithDouble:[(UIStepper *)sender value]];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:saveNumber forKey:@"saveNumber"];
    [defaults synchronize];
    self.myLabel.text = [NSString stringWithFormat:@"%@",saveNumber];
}

ただし、「stepper.value = [NSNumber numberWithDouble:loadNumber];」という行 ステッパーは double のみを受け入れると思いますが、それを設定するために何が間違っているのかわかりません。

私が達成する必要があるのは次のとおりです。- 1) saveNumber の NSUserDefaults にデフォルト値を設定します。これは、ユーザーがバリエーションを作成するまで使用されます。2) ロードまたはビューが表示されたら、saveNumber を使用して stepper.value と myLabel の両方の値を設定します。3) ステッパーで変更すると、値が myLabel で更新され、NSUserDefaults saveNumber も更新されるようにします。

誰かが私がどこで間違っているのかアドバイスして、私のコードを修正してください。

さらに、これを入力しているときに気付いたのは、最終的なアプリでは、NSUserDefaults savedNumber 値を使用するビューコントローラーとは別のビューコントローラーでこの設定を行うことです。これを念頭に置いて、このviewControllerだけでなく、値が必要な他のviewControllerでもsavedNumberを確実に利用できるようにする方法を教えてください。

どうもありがとう。

4

2 に答える 2

1

質問 1 について: 1 つのインスタンス変数int stepper;(.h 内) を作成viewWillAppearし、現在行っているようにこの変数を設定します。そしてセット

stepper = [defaults integerForKey:@"stepper"];

IBAction で呼び出すだけです

stepper++;
self.myLabel.text = [NSString stringWithFormat:@"%i",stepper];
and save it in your NSUserDefaults.

質問 2 に関して: NSUserDefaults は、特定のキーのデフォルトを登録する可能性を提供します。これを見てください:

NSDictionary *defaults = [NSDictionary dictionaryWithObjectsAndKeys:
                                @"test", @"key",
                                nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaults];
于 2013-12-19T15:16:21.960 に答える