我按照user2207904的代码
在viewDidLoad上我创建了20个滑块和20个标签
然后我的20个标签取得了推子的值( label.text = [NSString stringWithFormat:@“%i”,slvalue]; )
但是像这样,如果我移动我的标签不遵循我的推子值......
我的标签如何跟随推子值?
我的代码
- (void)viewDidLoad
{
[super viewDidLoad];
for(int i=0; i< 20; i++){
//sliders
UISlider *slider = [[[UISlider alloc] initWithFrame:CGRectMake(1+i*50, 450, 300, 10)] autorelease];
slider.minimumValue = 1;
slider.maximumValue = 100;
slider.continuous = YES;
[self.view addSubview:slider];
slider.transform = CGAffineTransformRotate(slider.transform, 270.0/180*M_PI);
[slider setThumbImage:thumbImage0 forState:UIControlStateNormal];
[slider release];
// label
UILabel *label = [[UILabel alloc] initWithFrame: CGRectMake(1+i*50, 640, 40, 15)];
int slvalue = slider.value;
label.text= [NSString stringWithFormat:@"%i", slvalue];
[self.view addSubview:label];
[label release];
}
新问题:
的 mofified 的
我这样做:
我在我的FirstViewController.m中放了一个IBAction
- (IBAction)sliderUpdate:(UISlider *)sender {
self.label.text = [NSString stringWithFormat:@"%g", sender.value];
}
并将其放在我的viewDidLoad(FirstViewController.m)
中{
[super viewDidLoad];
for(int i=0; i< 20; i++){
//sliders
UISlider *slider = [[[UISlider alloc] initWithFrame:CGRectMake(1+i*50, 450, 300, 10)] autorelease];
slider.minimumValue = 1;
slider.maximumValue = 100;
slider.continuous = YES;
[slider addTarget:self action:@selector(sliderUpdate:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:slider];
slider.transform = CGAffineTransformRotate(slider.transform, 270.0/180*M_PI);
[slider setThumbImage:thumbImage0 forState:UIControlStateNormal];
[slider release];
// label
UILabel *label = [[UILabel alloc] initWithFrame: CGRectMake(1+i*50, 640, 40, 15)];
int slvalue = slider.value;
label.text= [NSString stringWithFormat:@"%i", slvalue];
[self.view addSubview:label];
[label release];
}
我的(IBAction)中出现此错误更新: 属性'标签'未在'FirstViewController *'类型的对象上找到
答案 0 :(得分:1)
如果您控制从滑块拖动到UIViewController的实现,它将设置一个IBAction方法,只要值发生更改就会调用该方法。在此方法中,只需设置标签的文本即可。无需创建特殊的子类。
代码最终会看起来像这样:
- (IBAction)setLabel:(UISlider *)sender {
self.myLabel.text = [NSString stringWithFormat:@"%g", sender.value];
}
编辑:听起来你是以编程方式制作滑块。在这种情况下,您将不得不在每个人上调用addTarget:action:forControlEvents:
来设置目标操作。 (控制事件将为UIControlEventValueChanged
。)
另外,只要知道哪个滑块到达什么标签,就可以制作2个NSArrays,其中一个数组中的第i个滑块与另一个数组中的第i个标签匹配。
答案 1 :(得分:0)
拖放或以编程方式创建一个UILabel和UISlider,然后在Slider中使用此方法进行滑块操作
-(IBAction)slider:(id)sender {
NSString *s=[NSString stringWithFormat:@"%f",slider.value];
[label setText:s]; }
因此,每当您更改滑块时,您的标签值也会发生变化。我希望您能得到它吗?