我正在尝试使用标签创建一系列标签,然后更新文本。但是,只有最后一个标签才会更新。如何更新所有这些标签或特定标签标签?
此示例应生成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]];
}
答案 0 :(得分: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]];
}