2013-01-22 51 views
3

我尝试在按钮单击后将值设置为滑块, 但它不起作用 - 滑块不移动。代码运行正常,没有错误。设置滑块值

它应该很简单,但我不明白。 xCode版本4.5.2

谢谢!


这里我的代码:

ViewController.h

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController 
@property (weak, nonatomic) IBOutlet UILabel *debugLabel; 
@property (weak, nonatomic) IBOutlet UISlider *slider; 

- (IBAction)slider:(id)sender; 
- (IBAction)ButtonChangeValue:(id)sender; 

@end 

ViewController.m

#import "ViewController.h" 
@interface ViewController() 
@end 

@implementation ViewController 
@synthesize slider; 

... 

- (IBAction)slider:(UISlider *)sender { 
    float value = [sender value]; 
    self.debugLabel.text = [NSString stringWithFormat:@"Value: %f",value]; 
} 

- (IBAction)ButtonChangeValue:(id)sender { 
    slider.value = 90; 
} 
+0

尝试设置'minimumValue'和'maximumValue'先正确的价值观 – onmyway133

回答

6

我觉得你的问题是,滑块接受0.0和1.0之间的值(默认值,与_slider.maximumValue_slider.minimumValue改变它们)。尝试将值设置为0.9而不是设置90(如果您的意思是90%)。

如果滑块更新,但没有设置动画,使用:

[_slider setValue:0.9 animated:YES]; 

注意,给你的代码,你可能需要使用self.slider而不是_slider

+0

非常感谢!是的,我必须直接在代码中设置最小值和最大值,我将它设置在属性检查器中,并且不知何故无法工作。 – miholzi

3

尝试使用

self.slider.value = 90; 

代替

slider.value = 90; 
1

检查我Answer

​​
+0

我没有投票,但OP想要设置按钮上的滑块值而不点击事件。 –

0

由于您使用的界面生成器首先要看看是:在文件的所有者连接到IBOutlets UI组件(滑块,按钮)。这是这类问题最常见的来源。

然后检查滑块的最小值和最大值(默认值为0; 1 - 如rdurand所述)。

spider1983也是正确的:因为滑块是一个属性,你可以将它作为self.slider(或_slider,但不应该使用本例中的最后一个)来解决。

1

要使用slider.value = 90;

你ViewController.h应该是:

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController 
{ 
    UISlider *slider; 
} 
@property (weak, nonatomic) IBOutlet UILabel *debugLabel; 
@property (weak, nonatomic) IBOutlet UISlider *slider; 

- (IBAction)slider:(id)sender; 
- (IBAction)ButtonChangeValue:(id)sender; 

@end 

而且不要忘了在ViewController.m @synthesize slider;为好。

否则,使用self.slider.value = 90;_slider.value = 90;

0

我想。因为您没有提到滑块的最大值和最小值,所以它将采用0到1的默认最大值和最小值。因此无法将值设置为90。首先改变它的最大值和最小值是这样的:

Slider.minimumValue = 1; 
Slider.maximumValue = 100; 

现在试试你的事,

Slider.value =90;