2016-06-21 16 views
0

私はXcodeを初めて使用しており、OSXでObjective Cを使用しています。アプリの再起動時にスライダーのユーザーが最後に選択した値を読み込む方法は?

私は、ユーザーが最後に選択した値をスライダーに読み込もうとしていますが、そのときにアプリが再起動します。

私はゲッターをコーディングする方法を知っていただきたいと思いスライダーのための私のコード...

- (IBAction)sliderChanged:(id)sender { 

    amount = [self.amountSlider integerValue]; 

    NSString *amountString = [NSString stringWithFormat:@"%ld", amount]; 

    [self.amountLabel setStringValue:amountString]; 
} 

私はこのセッターを持っている

...

- (void)setInteger:(NSInteger)valueforKey:(NSString *)defaultName{ 

    [[NSUserDefaults standardUserDefaults] setObject:@"amountString" forKey:@"amountSlider"]; 
} 

コードによる手順を理解していただければ幸いです。

上記の既存のコードに対する改善や修正もあります。

+0

ストアNSUserDefaults' 'の値とアプリがrelaunchesときにスライダに値を割り当てます。 –

答えて

0

このような既定値から取得、保存するために別々の機能を作成します。

- (void)saveValueToUserDefaults:(NSString *)pValue key:(NSString *)kKey { 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    [self removeValueFromUserDefaults:kKey]; 

    [defaults setObject:pValue forKey:kKey]; 
    [defaults synchronize]; 
} 

- (void)removeValueFromUserDefaults:(NSString *)kKey { 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    if ([defaults objectForKey:kKey]) { 
     [defaults removeObjectForKey:kKey]; 
    } 
} 

- (NSString *)retriveValueFromUserDefaults:(NSString *)kKey { 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    if ([defaults objectForKey:kKey]) { 
     return [defaults objectForKey:kKey]; 
    } else { 
     return kStringEmpty; 
    } 
} 

これは、デフォルトから値を保存して取得するのが簡単になります。 Like-

[self saveValueToUserDefaults:YOUR_AMOUNT forKey:YOUR_KEY]; 

と、このように取得、

YOUR_AMOUNT = [self retriveValueFromUserDefaults:YOUR_KEY]; 
0

あなたはそれを求め:あなたのクラスのD はamountChecker = 0

と呼ばれる整数の変数を作成するには、このようなチェッカーと呼ばれる関数を作成:この機能では、その後

-(void) checker { 
    if (amount == amountChecker){ 
     [[NSUserDefaults standardUserDefaults] setObject:amountLabel.text forKey:@"amountSlider"]; 
    } 
    else 
     amount = amountChecker; 
} 

..:

- (IBAction)sliderChanged:(id)sender { 

    amount = [self.amountSlider integerValue]; 

    NSString *amountString = [NSString stringWithFormat:@"%ld", amount]; 

    [self.amountLabel setStringValue:amountString]; 
    [self performSelector:@selector(checker) withObject:nil afterDelay:1]; 
} 

このコードでは、2番目の値が過ぎてもスライダが変更されていない場合にのみ値を保存します。 60回毎秒:D それそれはそれを

が格納されますされていない場合、あなたはあなたがこのコードを使用しますアプリを再び開いたときに値が変更された場合、すべての始まりは、あなたはスライダーを変更すると、その後1秒後にそれがチェックされます:

amount = [[NSUserDefaults standardUserDefaults] objectForKey:@"amountSlider"]; 
関連する問題