从视图中删除UILabel的问题
我有一个UILabel在我看来。如果某个函数被调用,我想删除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
[email protected]"Cannot connect to server.";
startLabel.backgroundColor=[UIColor clearColor];
startLabel.textColor=[UIColor whiteColor];
startLabel.font=[UIFont systemFontOfSize:18];
startLabel.tag=1;
[self.view addSubview:startLabel];
[email protected]"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];
}
是在一个单一的方法,所有的代码?如果是的话,你正在创建新的startLabel
和startLabel2
,并尝试在else
部分代码中删除它们,但这些不是作为子视图添加的标签。使标签成为类的成员,并且只在init/viewDidLoad
方法中将它们分配一次。
谢谢,它工作得很好...不知道我是如何错过这个..我的坏:( – Ahsan 2011-06-03 12:57:07
您列出的所有方法都有效。所以我担心你没有在正确的地方搜索你的bug。
确保:
- 你所得到的
label
实例是一个好 - 只有一个
label
实例(你可以只删除您不小心插入重复...)
一个非常调试这些类型的问题,有效的方法是(我做了很多次,每天...):
- 把一个断点,你要删除的标签
-
时遇到断点,在
gdb
控制台输入命令:> po [[self view] recursiveDescription]
recursiveDescription
将显示[self view]
子视图树,与地址以及许多有用的信息,如坐标......隐藏......这将使您清楚地理解该视图正在发生的事情。 转到下一步,在您呼叫
removeFromSuperview
之后,再次播放命令,并查看是否更改了...或不是。仔细检查对象地址。
了解GDB调试一般来说,你将永远不必再问这些样的问题:)
感谢您的建议,将检查它。:) – Ahsan 2011-06-03 12:57:43
恕我直言,最好知道*如何找到解决方案* “解决方案”... ;) – 2011-06-03 13:04:38
你确定你提到的函数被调用,你肯定有标签的标签你认为“1”? – 2011-06-03 12:07:04
...你确定你的标签有标签1吗? – Saphrosit 2011-06-03 12:08:58
@WTP和@Saphrosit:是的,我确定函数被调用...并且我有一个带有标签1的标签(我用UILabels的代码更新了我的问题)。 – Ahsan 2011-06-03 12:25:48