我正在尝试制作一个usislider/slider,但我不知道为什么它会出现问题。下面是代码片段:
.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 %fn", [mySlider value]);
}
}
@end
将UISlider
对象定义为IBOutlet
意味着您将通过interface Builder将该ivar连接到接口中的UISlider
。是你做的吗?如果没有,那就可以解释为什么在UI中改变滑动条的值实际上没有做任何事情。
另外,当您在Interface Builder中将IBOutlet
变量连接到匹配的UI元素时,不需要在您的代码中创建对象。通过在NIB文件中定义,它已经被"创建"了。
问题是你调用这个方法(sliderValueChanges)的方式。而不是像那样调用它,请调用它像(sliderValueChanges:)。它工作得很好!