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 に答える