2011-11-21 78 views
0

我有一個滑塊,它將浮點數從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

你NSLogLog的原始sensitivitySlider.value,以確保滑塊本身設置正確?

+0

是的,這很好... –

+0

接下來,我將NSLog的numberWithFloat:sensitivitySlider.value結果賦值給任何變量之前,如果這也是正確的,那麼問題似乎是在settingsData類/ sensitivitySettingValue屬性或可變設置... –

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) 
+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文件

#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的值。如果你已經在某個地方分配了這個對象,那麼在你嘗試設置或獲取它的任何成員變量值之前,確保你分配了它。

相關問題