2

我正在以编程方式打印标签,但无法将其从屏幕上移除。我试过了,removeFromSuperview但没有一个有效。它一直停留在屏幕上,而我可以在调试中看到它传递的代码,如下面的代码所示。lbl1.hidden = YES;lbl1= nil;ELSE

我的问题在哪里?

-(void)reloadData
lbl1 = [[UILabel alloc] initWithFrame:CGRectMake(320, 530, 550, 200)];

if (result1 > result2 &&  al == YES)
{
    lbl1.userInteractionEnabled = YES;
    lbl1.text = @" Warning!! ";
    lbl1.tag = 30;
    lbl1.font = [UIFont fontWithName:@"Helvetica" size:18.0];
    lbl1.textColor = [UIColor redColor];
    lbl1.backgroundColor = [UIColor clearColor];
    lbl1.lineBreakMode = NSLineBreakByWordWrapping;
    lbl1.numberOfLines = 2;
    [self addSubview:lbl1];
    [lbl1 release];
}

else{

    //Non of them is removing the label.
    [lbl1 removeFromSuperview];
    lbl1= nil;
    lbl1.hidden = YES;
}
4

3 回答 3

4

每次你进入 reloadData 时,你都在创建一个新标签,所以如果你进入 reload 并跳转到 else,你就是在创建一个标签,然后删除它。

您需要将该标签保存为实例变量并将其删除/添加到您的 reloadData。

@property(nonatomic, strong) UILabel *lbl1;

在您的代码中,只执行一次:

self.lbl1 = [[[UILabel alloc] initWithFrame:CGRectMake(320, 530, 550, 200)] autorelease];

在你的 reloadData 做:

-(void)reloadData
lbl1 = [[UILabel alloc] initWithFrame:CGRectMake(320, 530, 550, 200)];

if (result1 > result2 &&  al == YES)
{
    self.lbl1.userInteractionEnabled = YES;
    //Etc...
}

else{

    [self.lbl1 removeFromSuperview];
}
于 2013-12-05T12:31:17.220 回答
1

试试这样:

-(void)reloadData
if(!lbl1)
lbl1 = [[UILabel alloc] initWithFrame:CGRectMake(320, 530, 550, 200)];

if (result1 > result2 &&  al == YES)
{
    lbl1.userInteractionEnabled = YES;
    lbl1.text = @" Warning!! ";
    lbl1.tag = 30;
    lbl1.font = [UIFont fontWithName:@"Helvetica" size:18.0];
    lbl1.textColor = [UIColor redColor];
    lbl1.backgroundColor = [UIColor clearColor];
    lbl1.lineBreakMode = NSLineBreakByWordWrapping;
    lbl1.numberOfLines = 2;
    [self addSubview:lbl1];
    [lbl1 release];
}

else{

    //Non of them is removing the label.
    [lbl1 removeFromSuperview];
    lbl1= nil;
    lbl1.hidden = YES;
}
于 2013-12-05T12:33:02.427 回答
0

尝试像这样删除....

if (result1 > result2 &&  al == YES)
{
    lbl1.userInteractionEnabled = YES;
    lbl1.text = @" Warning!! ";
    lbl1.tag = 30;
    lbl1.font = [UIFont fontWithName:@"Helvetica" size:18.0];
    lbl1.textColor = [UIColor redColor];
    lbl1.backgroundColor = [UIColor clearColor];
    lbl1.lineBreakMode = NSLineBreakByWordWrapping;
    lbl1.numberOfLines = 2;
    [self addSubview:lbl1];
    [lbl1 release];
}

else{

    //Non of them is removing the label.
    [[self.view viewWithTag:30] removeFromSuperview];
    lbl1= nil;
    lbl1.hidden = YES;
}
于 2013-12-05T12:34:17.510 回答