3

我遵循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];

}

新问题 :

修改的

我这样做:

我在我的 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)sliderUpdate 中有此错误: 在“FirstViewController *”类型的对象上找不到属性“标签”

4

2 回答 2

1

如果您控制从滑块拖动到 UIViewController 的实现,它将设置一个 IBAction 方法,该方法在值更改时调用。在这种方法中,只需设置标签的文本。无需制作特殊的子类。

代码最终看起来像这样:

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

编辑:听起来您正在以编程方式制作滑块。在这种情况下,您将不得不调用addTarget:action:forControlEvents:每个人来设置目标操作。(控制事件将是UIControlEventValueChanged。)

此外,就知道哪个滑块到哪个标签而言,您可以制作 2 个 NSArray,其中一个数组中的第 i 个滑块与另一个数组中的第 i 个标签匹配。

于 2013-03-30T00:07:07.063 回答
0

拖放或以编程方式创建一个 UILabel 和 UISlider ,然后在 Slider 中将其用于滑块操作

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

所以每当你改变你的滑块你的标签值也会改变。我希望你明白了吗?

于 2013-03-30T04:04:21.827 回答