我尝试在单击按钮后将值设置为滑块, 但它不起作用 - 滑块不移动。代码运行正常,没有错误。
它应该很简单,但我无法弄清楚。 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 :(得分:7)
我认为您的问题是滑块接受介于0.0和1.0之间的值(默认值,将其更改为_slider.maximumValue
和_slider.minimumValue
)。尝试将值设置为0.9而不是设置90(如果您的意思是90%)。
如果滑块更新但未设置动画,请使用:
[_slider setValue:0.9 animated:YES];
请注意,根据您的代码,您可能需要使用self.slider
代替_slider
。
答案 1 :(得分:3)
尝试使用
self.slider.value = 90;
而不是
slider.value = 90;
答案 2 :(得分:1)
检查我的 Answer
- (void)viewDidLoad
{
UITapGestureRecognizer *gr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(sliderTapped:)];
[slider addGestureRecognizer:gr];
}
- (void)sliderTapped:(UIGestureRecognizer *)g
{
UISlider* s = (UISlider*)g.view;
if (s.highlighted)
return; // tap on thumb, let slider deal with it
CGPoint pt = [g locationInView: s];
CGFloat percentage = pt.x / s.bounds.size.width;
CGFloat delta = percentage * (s.maximumValue - s.minimumValue);
CGFloat value = s.minimumValue + delta;
[s setValue:value animated:YES];
NSString *str=[NSString stringWithFormat:@"%.f",[self.slider value]];
self.lbl.text=str;
}
答案 3 :(得分: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;
答案 4 :(得分:1)
对于Swift,您可以使用:
slider.setValue(5.0, animated: true)
答案 5 :(得分:0)
由于您正在使用界面构建器,首先要看的是:UI组件(滑块,按钮)是否连接到File的所有者中的IBOutlets。这是最常见的问题来源。
然后检查滑块的最小值和最大值(默认值为0; 1 - 如rdurand所述)。
spider1983也是正确的:因为slider是一个属性,你可以将它称为self.slider(或_slider,但在这种情况下你不应该使用最后一个)。
答案 6 :(得分:0)
Slider.minimumValue = 1;
Slider.maximumValue = 100;
现在试试你的事,
Slider.value =90;
答案 7 :(得分:0)
在视野之内
@State private var value1: Double = 0.9
然后参考
Slider(value: $value1)