0

これは些細な質問のように聞こえるかもしれませんが、*.h ファイルで 50 個のラベルを定義しました。

UILabel *tempLabel1;
UILabel *tempLabel2;
UILabel *tempLabel3;
...
UILabel *tempLabel50;

私の *.c ファイルでは、これらの各ラベルの値を設定したいのですが、手動で行ったり、何度も何度も書き込んだりしたくありません。

//Instead of doing this
tempLabel1.text = @"1";
tempLabel2.text = @"2";
...
tempLabel50.text = @"50";   


//I would like to do something like this
//I know this isn't correct syntax but want to know if something like
//this can be done?
for (int i = 0; i < 50; i++) 
{
    tempLabel[i].text = @"%d", i+1;
}
4

3 に答える 3

2

頭に浮かぶ1つの方法(最もクリーンではありませんがAの方法)は、次のことを行うことです:

UILabel *tempLabels[50];

そのときに発生する問題は、IB を使用してそれらを接続できないことです。代わりに、それぞれでタグプロパティを使用します (これは、50 個の UILabels すべてにタグを設定する必要があることを意味します)。それらを適切に接続するには、viewDidLoad でこれを実行します。

for (index = 1; index < 50; ++index)
{
    tempLabels[index] = (UILabel *) [self.view viewWithTag: index];
}

ビンゴ!ラベルを変更する必要がある場合は、コードのどこでも、次の操作を実行できます。

for (index = 1; index < 50; ++index)
{
    tempLabels[index].text = [NSString stringWithFormat: @"Number %d", index];
}

タグを設定するのはちょっと面倒ですが、終わったら完了です。

ところで、他のソリューションとは異なり、IB を使用してラベルを作成できます。

于 2012-08-07T15:00:04.613 に答える
1

これはあなたにとって良いスタートになると思います。

NSMutableArray *_labels = [NSMutableArray array];

for (int i = 1; i < 50; i++) {
    UILabel *_newLabel = [[UILabel alloc] init]; // please, make the init method as you wish
    // ... any customization of the UILabel
    [_newLabel setText:[NSString stringWithFormat:@"%d", i]];
    [_newLabel setTag:i];
    [_labels addObject:_labels];
    [self.view addSubview:_newLabel];
}

// ... and then you can do the following

for (int i = 0; i < _labels.count; i++) {
    [((UILabel *)[_labels objectAtIndex:i]) setText:[NSString stringWithFormat:@"%d", i]];
}
于 2012-08-07T14:51:50.980 に答える
0

UILabelをプログラムで追加して、それらにアクセスできるようにすることができます。そのため、UILabelのテキスト値も設定できます。

次のようなUILabelを追加できます。

    UILabel *theLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 200, 100)]; //need to calculate the x,y coordinates in dependency of i
    theLabel.text =  [NSString stringWithFormat:@"%i",i];
    [self.view addSubview:theLabel]; // add it to your view
    myLabel.backgroundColor = [UIColor clearColor]; // change the color

後でラベルにアクセスする必要がある場合は、保持しているNSArrayにラベルを追加するだけです。

于 2012-08-07T14:48:19.147 に答える