objective-c - 从 View 中删除 UILabel 的问题

标签 objective-c ios 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

    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/

    相关文章:

    ios - 带有 setter/getter 的 EXC_BAD_ACCESS

    objective-c - 试图将鼠标点击发送到游戏窗口,mac

    ios - UINavigationBar 中的 AttributedString 不显示两行文本

    ios - 如何访问另一个类中的变量并更改其值

    ios - 从 UITabBarController 调用时无法获取常用函数中的选项卡项

    ios - 正确转换 UILabel

    iphone - Obj-C,根据plist值设置UILabel的颜色?

    objective-c - iAds : Why doesn't CCGLView *eaglView = [[CCDirector sharedDirector] openGLView] work?

    iphone - 从 json 填充 UITableView

    ios - iTunes Connect 保留名称限制