2010-12-12 79 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 2010-12-12 01:49:28

1

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

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

+0

感谢您的输入(+1),我之前将时间从0.0设置为10.0。 – Linuxmint 2010-12-12 01:59:02

+1

然后你只会得到0,1,2,3 ... 10的值,该值的浮点部分仍然会丢失。如果这是故意的,那么这不是问题。否则,您应该将该值存储为浮点数以避免丢失部分用户的偏好。 – freespace 2010-12-12 02:02:42

+0

是的,这是故意的。 – Linuxmint 2010-12-12 16:11:31

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

}