我有一个滑块,可以将浮点数从1更改为10,但我想保存此值并在所有视图控制器中使用它,因此我将该浮点数保存为模型类中的NSNumber(settingsData.sensitivitySliderSettingValue)。
我试图在每次更改时将更新的滑块值输出到控制台,但它只是设置为0而不是0到10.我不明白为什么会这样......
这是我的代码:
-(IBAction)sensitivitySliderValueChanged:(id)sender
{
[self updateSensitivity];
}
-(void)updateSensitivity{
settingsData.sensitivitySettingValue = [NSNumber numberWithFloat:sensitivitySlider.value];
NSLog(@"The Slider Value is: %1.1f", [settingsData.sensitivitySettingValue floatValue]);
}
答案 0 :(得分:2)
我以示例演示的形式实现了您的整个代码,其工作方式如下
// ----------------- .m文件
#import "SliderDemoViewController.h"
#import "SettingsData.h"
@implementation SliderDemoViewController
-(IBAction)sensitivitySliderValueChanged:(id)sender
{
[self updateSensitivity];
}
-(void)updateSensitivity{
settingsData.sensitivitySettingValue = [NSNumber numberWithFloat:sensitivitySlider.value];
NSLog(@"The Slider Value is: %1.1f", [settingsData.sensitivitySettingValue floatValue]);
NSLog(@"sensitivitySlider.value= %f",sensitivitySlider.value);
NSLog(@"sensitivitySlider.minimumValue= %f",sensitivitySlider.minimumValue);
NSLog(@"sensitivitySlider.maximumValue= %f",sensitivitySlider.maximumValue);
}
@end
// ----------。h file
#import <UIKit/UIKit.h>
@class SettingsData;
@interface SliderDemoViewController : UIViewController {
IBOutlet UISlider* sensitivitySlider;
SettingsData* settingsData;
}
-(IBAction)sensitivitySliderValueChanged:(id)sender;
@end
现在 SettingsData 是一个声明为
的datamodel类// -----------
@interface SettingsData : NSObject {
NSNumber* sensitivitySettingValue;
}
@property (nonatomic, retain) NSNumber *sensitivitySettingValue;
@end
现在updateSensitivity的输出将是
2011-11-22 09:59:57.259 SliderDemo[691:207] The Slider Value is: 0.0
2011-11-22 09:59:57.260 SliderDemo[691:207] sensitivitySlider.value= 5.581448
2011-11-22 09:59:57.261 SliderDemo[691:207] sensitivitySlider.minimumValue= 1.000000
2011-11-22 09:59:57.261 SliderDemo[691:207] sensitivitySlider.maximumValue= 10.000000
如果您查看第一行日志,它将始终输出0.00 ,因为我们没有分配settingsData对象。
我发现你可能做错了什么的唯一一点就是不创建这个对象
if(!settingsData)
{
settingsData = [[SettingsData alloc]init];
}
除非您分配此对象,否则在为其属性sensitivitySettingValue的值执行NSLog时,将始终将0作为浮点值。如果您在某个地方分配了此对象,请确保在尝试设置或检索其任何成员变量值之前分配它。
答案 1 :(得分:0)
你有NSLogged原始的sensitivitySlider.value以确保滑块本身设置正确吗?
答案 2 :(得分:0)
确保滑块的minimumValue和maximumValue设置正确
并检查你NSLog %1.1f 对我来说很奇怪。尝试%f
如需更多故障排除,请发布此输出:
NSLog(@"sensitivitySlider.value= %f",sensitivitySlider.value)
NSLog(@"sensitivitySlider.minimumValue= %f",sensitivitySlider.minimumValue)
NSLog(@"sensitivitySlider.maximumValue= %f",sensitivitySlider.maximumValue)