我想隐藏UILabel,但我无法隐藏我的标签在ViewDidLoad之外或“在ViewDidLoad内但在for循环之外”。在for循环中的ViewDidLoad中,我可以实现我想要的。我可以用标签隐藏标签。但是在循环之外它没有用。
这就是我在做的事情。请看看。
-(void)ViewDidLoad{
int lbl_Pos_X = 580;
for (j=0; j<30; j++) {
lbl = [[UILabel alloc ] initWithFrame:CGRectMake(lbl_Pos_X, 21, 7, 15)];
lbl.backgroundColor = [UIColor redColor];
lbl.tag = j;
[self.view addSubview:lbl];
//[lbl release];
lbl_Pos_X = lbl_Pos_X + 5;
[lbl viewWithTag:10].hidden = YES; // here working
}
[lbl viewWithTag:12].hidden = YES; // here Not working
}
非常欢迎任何想法或建议。
答案 0 :(得分:1)
您可以从已添加标签的超级视图中访问您的标签。
用以下代码替换您的代码:
[self.view viewWithTag:12].hidden = YES;
编辑:如果您只需要为特定标记隐藏一个标签,请使用此标记:
for (UIView *view in self.view.subviews) {
if ([view isKindOfClass:[UILabel class]] && (view.tag == 12)) {
[view setHidden:YES];
}
}
它适用于你。
答案 1 :(得分:1)
尝试使用这个..
UILabel *label = (UILabel *)[self.view viewWithTag:12];
label.hidden = YES;
答案 2 :(得分:1)
它不起作用,因为它超出了具有有效内存的lbl的范围定义。[在if循环中你正在分配它并因此当有标记10的lbl存在时有有效内存]
在这里,您必须从superview获取标签,即self.view,然后使用它
UILabel *label = (UILabel *)[self.view viewWithTag:12];
然后将其隐藏为
label.hidden=YES;
编辑:viewWithTag:0问题
这是因为self.view具有标记值为0的所有视图,因为默认标记值为0.您应该做的是检查天气返回的视图是uilabel并且tehn使其隐藏,或者设置唯一标记值循环中的所有标签都在改变循环语句
解决方案:另一种方式 保留一个包含所有标签参考的数组,您可以在以后需要的任何地方使用它。 声明
NSMutableArray *labelArray;
在viewDidLoad
中{
labelArray=[[NSMutableArray alloc]initWithCapacity:10];
int lbl_Pos_X=0;
for (int j=0; j<30; j++) {
UILabel* lbl = [[UILabel alloc ] initWithFrame:CGRectMake(lbl_Pos_X, 21, 7, 15)];
lbl.backgroundColor = [UIColor redColor];
lbl.tag = j;
[self.view addSubview:lbl];
[labelArray addObject:lbl];
//[lbl release];
lbl_Pos_X = lbl_Pos_X + 5;
[lbl viewWithTag:10].hidden = YES; // here working
}
UILabel *label=[labelArray objectAtIndex:15];
label.hidden=YES;
}
答案 3 :(得分:1)
[lbl viewWithTag:12].hidden = YES;
它没有为循环而工作,对于循环lbl的外侧等于nil,你不能直接访问标签,就像这个[lbl viewWithTag:12].hidden = YES;
一样,使用标识符来访问这样的标签
UILabel *label = (UILabel *)[self.view viewWithTag:12];
答案 4 :(得分:1)
viewWithTag:
有时表现出意外。 (如果您查看具有分层子视图)
要摆脱这种情况,最好做这样的事情。
for (UIView *subview in parentViewOfLabel)
{
if ([subview isKindOfClass:[UILabel class]] && [subview tag]==12)
subview.hidden = YES;
}
请确保您在此处提供正确的标签父母。
答案 5 :(得分:0)
您正在使用以下代码
[lbl viewWithTag:12].hidden = YES;
声音不正确,因为viewWithTag
函数返回接收者层次结构中的tag属性与tag参数中的值匹配的视图。
在两个宫殿中尝试如下(进入或离开循环)。
UILabel *label = [self.view viewWithTag:12];
label.hidded = YES;