2013-03-29 31 views
3

我遵循的user2207904我希望我的UILabel按照我UISlider值

在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

我这样做:

我把一个IBAction为我FirstViewController.m

- (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为)sliderUpdate:在'FirstViewController *'类型的对象上未找到属性“标签”

回答

1

如果您控制从滑块拖动到UIViewControll的实施呃,它会建立一个IBAction方法,当值被改变的时候被调用。在这种方法中,只需设置标签的文字即可。无需制作特殊的子类。

的代码最终会看起来像这样:

- (IBAction)setLabel:(UISlider *)sender { 
    self.myLabel.text = [NSString stringWithFormat:@"%g", sender.value]; 
} 

编辑:这听起来像你编程使滑块。在这种情况下,你将不得不打电话给addTarget:action:forControlEvents:来设置目标动作。 (控制事件将是UIControlEventValueChanged。)

另外,就知道什么滑块转到哪个标签,您可以创建2个NSArrays,其中一个数组中的第i个滑块与另一个数组中的第i个标签相匹配。

+0

嗯,我想我的答案有点太复杂。应该更多地阅读这个。 –

+0

检查我的第一条消息(修改) – socorro

+0

这就是为什么我建议将标签放入数组中。如果您不将标签存储在某种财产中,那么您将无法访问它们。如果我是你,我会为你的'FirstViewController'添加一个'@property(strong,nonatomic)NSMutableArray *标签',并用你的标签填充它。 –

0

拖放或programetically创建一个的UILabel和UISlider,然后在滑块用这个滑块操作

-(IBAction)slider:(id)sender { 
NSString *s=[NSString stringWithFormat:@"%f",slider.value]; 
[label setText:s]; } 

所以每当你改变你的滑块标签值也changes.I希望你得到它RYT?