我正在尝试创建一个UISlider /滑块,但我不知道它为什么会出现问题。这是片段:
.h =
@interface sliderViewController : UIViewController {
IBOutlet UISlider *mySlider;
}
@property (nonatomic) float Value;
@property (nonatomic) float minimumValue;
@property (nonatomic) float maximumValue;
@property (nonatomic, getter=isContinuous) BOOL continuous;
@end
.m =
@implementation sliderViewController
@synthesize minimumValue;
@synthesize maximumValue;
@synthesize Value;
@synthesize continuous;
CGRect rect = CGRectMake(10, 60, 200, 30);
mySlider = [[UISlider alloc] initWithFrame:rect];
[mySlider addTarget:self
action:@selector(sliderValueChanges)
forControlEvents:UIControlEventValueChanged];
mySlider.backgroundColor = [UIColor clearColor];
mySlider.minimumValue = 0.0;
mySlider.maximumValue = 10.0;
mySlider.continuous = YES;
mySlider.value = 5.0;
[theView addSubview: mySlider];
}
- (void)sliderValueChanges:(id)sender{
UISlider *slider = sender;
if (mySlider==slider) {
printf("Value of slider is %f\n", [mySlider value]);
}
}
@end
答案 0 :(得分:1)
将UISlider
对象定义为IBOutlet
意味着您将通过Interface Builder将该ivar连接到界面中的UISlider
。是你做的吗?如果没有,那肯定会解释为什么更改UI中的滑块值实际上没有做任何事情。
此外,当您将IBOutlet
ivar连接到Interface Builder中的匹配UI元素时,无需在您的代码中创建该对象。它已经通过在您的NIB文件中定义而“创建”。
答案 1 :(得分:0)
问题在于您调用此方法的方式(sliderValueChanges)。请不要这样称它为(sliderValueChanges :)。它工作正常!