Я реализовал весь ваш код в виде демонстрационного примера, и он работает следующим образом.
//----------------- .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 файл
#import <UIKit/UIKit.h>
@class SettingsData;
@interface SliderDemoViewController : UIViewController {
IBOutlet UISlider* sensitivitySlider;
SettingsData* settingsData;
}
-(IBAction)sensitivitySliderValueChanged:(id)sender;
@end
Здесь SettingsData — это класс модели данных, объявленный как
//-----------
@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];
}
если вы не выделяете этот объект, вы всегда будете получать 0 в качестве значения с плавающей запятой при выполнении NSLog для значения его свойства чувствительностиSettingValue. Если вы где-то разместили этот объект, убедитесь, что вы выделили его задолго до того, как попытаетесь установить или получить значение любой из его переменных-членов.
person
Rahul Sharma
schedule
22.11.2011