iPhone滑块保存用户首选项

时间:2010-12-12 01:41:48

标签: iphone objective-c xcode settings preferences

我需要在Settings.bundle中保存滑块首选项。

我正在使用以下代码写入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);

此代码不起作用。有人可以给我一些我可以使用的替换代码吗?

3 个答案:

答案 0 :(得分:5)

你的问题在这里:

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

您需要使用%d格式说明符,%@是格式说明符,用于将description消息发送到参数。

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

以下是格式说明符列表:

alt text

有关详细信息,请参阅String Programming Guide

答案 1 :(得分:1)

另一个也许是真正的问题是UISlider的默认值范围是0.0到1.0。将其存储为整数,由于截断,您将只看到0或1。

您应该将其存储为浮点,而不是完全保留滑块的值。

答案 2 :(得分:0)

使用这个......

[**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"];

}