0

我正在尝试使用标签创建一系列标签,然后更新文本。但是,只有最后一个标签会被更新。如何更新所有这些标签或特定的标记标签?

此示例应制作 4 个标签,其中包含数字 1、2、3、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

查看 UIView 的类参考以获取有关 viewWithTag 方法的更多说明:http: //developer.apple.com/library/ios/#documentation/UIKit/Reference/UIView_Class/UIView/UIView.html

那里提到,此 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 回答