滑板不符合我的预期

时间:2011-11-21 17:48:07

标签: iphone ios floating-point slider nsnumber

我有一个滑块,可以将浮点数从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]);

}

3 个答案:

答案 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)