我實現你的整個代碼示例演示的形式,它的工作原理如下
// --- -------------- .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的其屬性sensitivitySettingValue的值。如果你已經在某個地方分配了這個對象,那麼在你嘗試設置或獲取它的任何成員變量值之前,確保你分配了它。
是的,這很好... –
接下來,我將NSLog的numberWithFloat:sensitivitySlider.value結果賦值給任何變量之前,如果這也是正確的,那麼問題似乎是在settingsData類/ sensitivitySettingValue屬性或可變設置... –