2010-12-12 12 views
0

私のSettings.bundleにスライダーの設定を保存する必要があります。iPhoneスライダーはユーザーの設定を保存します

私はSettings.bundleに書き込むために、次のコードを使用しています:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setInteger:mySlider.value forKey:@"TimerSliderKey"]; 
[defaults synchronize]; 

そしてSettings.bundleから読み取るために、次のコード:

NSUserDefaults *defaults2 = [NSUserDefaults standardUserDefaults]; 
int valueForSlider = [defaults2 integerForKey:@"TimerSliderKey"]; 
NSLog(@"The saved slider value is %@" , valueForSlider); 

このコードは動作しません。 。誰かが私に使用できる代替コードを教えてもらえますか?

答えて

5

あなたの問題はここにある:

NSLog(@"The saved slider value is %@" , valueForSlider); 

あなたは%d書式指定子を使用する必要があり、%@は引数にdescriptionメッセージを送信するための書式指定子です。ここで

NSLog(@"The saved slider value is %d" , valueForSlider); 

は書式指定子のリストです:

alt text

は、より多くの情報のためString Programming Guideを参照してください。

+0

ありがとう!あなたの答えを7分で受け入れます! +1 – Linuxmint

1

もう1つ、おそらく実際の問題は、デフォルトではUISliderの値の範囲が0.0から1.0までです。これを整数として格納すると、切り捨てによって0または1しか表示されません。

スライダの値を完全に保持する代わりに、浮動小数点として格納する必要があります。

+0

入力していただきありがとうございます(+1)、以前は0.0から10.0までの時間を設定していました。 – Linuxmint

+1

次に、0,1,2,3 ... 10の値だけを取得しますが、値の浮動小数点コンポーネントは失われます。これが意図的であれば、それは問題ではありません。それ以外の場合は、値を浮動小数点として格納して、ユーザーの好みの一部を失わないようにする必要があります。 – freespace

+0

はい、それは意図的でした。 – Linuxmint

0

使用この1 ...

[**yourslider** addTarget:self action:@selector(sliderValueChanged:) 
          forControlEvents:UIControlEventValueChanged]; 

if ([[NSUserDefaults standardUserDefaults]floatForKey:@"value"]) { 

    yourslider.value= [[NSUserDefaults standardUserDefaults]floatForKey:@"value"]; 

    } 


**--save your value in this method** 

-(IBAction)sliderValueChanged:(UISlider *)sender 
{ 

    NSLog(@"slider value = %f", sender.value); 


    [[NSUserDefaults standardUserDefaults]setFloat:sender.value forKey:@"value"]; 

} 
関連する問題