在我看来,我有一个 UILabel。如果正在调用某个函数,我想删除 UILabel 。我已经尝试了几种方法,但它不起作用!
代码尝试:
[[self.view viewWithTag:1] setHidden:YES];
或者
label.hidden=YES;
或者
[label removeFromSuperview];
我已经尝试了所有这些代码,但无济于事。任何人都可以让我知道我在这里缺少什么吗?谢谢。
我的代码的其他部分:
UILabel *startLabel=[[[UILabel alloc] initWithFrame:CGRectMake(55, 45, 300, 30)] autorelease];
UILabel *startLabel2=[[[UILabel alloc] initWithFrame:CGRectMake(40, 65, 300, 30)] autorelease];
if ((internetActive==NO)||(hostActive==NO)) {
status=1;
//add the label
startLabel.text=@"Cannot connect to server.";
startLabel.backgroundColor=[UIColor clearColor];
startLabel.textColor=[UIColor whiteColor];
startLabel.font=[UIFont systemFontOfSize:18];
startLabel.tag=1;
[self.view addSubview:startLabel];
startLabel2.text=@"Please check your connection.";
startLabel2.backgroundColor=[UIColor clearColor];
startLabel2.textColor=[UIColor whiteColor];
startLabel2.font=[UIFont systemFontOfSize:18];
startLabel2.tag=2;
[self.view addSubview:startLabel2];
startLabel.hidden=NO;
startLabel2.hidden=NO;
}
else if ((internetActive==YES) &&(hostActive==YES))
{
if(status==1)
{
//[startLabel removeFromSuperview];
//[startLabel2 removeFromSuperview];
//[[self.view viewWithTag:1] setHidden:YES];
//[[self.view viewWithTag:2] setHidden:YES];
NSLog(@"INSIDE!");
startLabel.hidden=YES;
startLabel2.hidden=YES;
[startLabel removeFromSuperview];
[startLabel2 removeFromSuperview];
}
最佳答案
您列出的所有方法都有效。所以我担心你没有在正确的地方搜索你的错误。
确保:
label
你得到的例子是好的label
实例(您可以删除不小心插入的副本...)一个非常调试此类问题的有效方法是(我每天这样做很多次......):
gdb
中输入该命令安慰 :> po [[self view] recursiveDescription]
recursiveDescription
will display a tree of[self view]
subviews, with adresses and many useful informations like coordinates... hidden... That will allow you to clearly understand what is going on in that view.
removeFromSuperview
打电话,再次播放命令,看看有什么变化......或者没有。仔细检查对象地址。 学习 gdb 和调试,你就再也不用问这些问题了 :)
关于objective-c - 从 View 中删除 UILabel 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6226862/