0

タグ付きの一連のラベルを作成してから、テキストを更新しようとしています。ただし、更新されるのは最後のラベルだけです。それらすべて、または特定のタグ付きラベルを更新するにはどうすればよいですか?

この例では、数字 1、2、3、4 を含む 4 つのラベルを作成する必要があります。次に、A、B、C、D で上書きする必要があります。4 番目のラベルのみが上書きされます。

考え?

int x = 10, y=10, w = 80, h = 30;
for(int i=1; i<= 4  ; i++)
{
    CGRect frame = CGRectMake(x, y, w, h ) ;
    myLab = [[UILabel alloc] initWithFrame:frame];
    [myLab setTag:i] ;
    [myLab setBackgroundColor:[UIColor whiteColor]] ;
    [myLab setText:[NSString stringWithFormat:@"%d",i]];
    [self.view addSubview:myLab];
    x += 158;
}


for (int i = 1; i <=4; i++){
    UILabel *textField = (UILabel*)[myLab viewWithTag:i];
    [textField setText:[NSString stringWithFormat:@"%c",i+64]];
}
4

1 に答える 1

1

viewWithTag メソッドの詳細については、UIView のクラス リファレンスを参照してください

この viewWithTag メソッドは、指定されたビューの現在のビューとそのすべてのサブビューを検索することが記載されています。現在の実装では、指定されたビューは myLab (for ループの後の最後の (4 番目) の UILabel に割り当てられます) であり、すべてのラベルを含む self.view ではありません。

[self.view viewWithTag:i]これらすべてのラベルをself.viewサブビューに追加しているため、self.viewの下で特定のタグを持つラベルを検索するようにラベルの外観を変更します。

for (int i = 1; i <=4; i++){
    UILabel *textField = (UILabel*)[self.view viewWithTag:i];
    [textField setText:[NSString stringWithFormat:@"%c",i+64]];
}
于 2013-05-29T13:46:21.930 に答える