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 にこのエラーがあります:プロパティ 'label' がタイプ 'FirstViewController *' のオブジェクトに見つかりません

4

2 に答える 2

1

スライダーから UIViewController の実装へのドラッグを制御すると、値が変更されるたびに呼び出される IBAction メソッドが設定されます。このメソッドでは、ラベルのテキストを設定するだけです。特別なサブクラスを作成する必要はありません。

コードは次のようになります。

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

編集:スライダーをプログラムで作成しているようです。その場合、addTarget:action:forControlEvents:それぞれを呼び出してターゲット アクションを設定する必要があります。(制御イベントは になりますUIControlEventValueChanged。)

また、どのスライダーがどのラベルに移動するかを知る限り、1 つの配列の i 番目のスライダーが他の配列の i 番目のラベルと一致する 2 つの NSArray を作成できます。

于 2013-03-30T00:07:07.063 に答える