我希望我的UILabel遵循我的UISlider值

时间:2013-03-29 23:39:06

标签: ios objective-c cocoa-touch

我按照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 *'类型的对象上找到

2 个答案:

答案 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];   }

因此,每当您更改滑块时,您的标签值也会发生变化。我希望您能得到它吗?