0

UILabel を非表示にしたいのですが、ViewDidLoad の外側または「ViewDidLoad の内側で for ループの外側」にあるラベルを非表示にできません。forループ内のViewDidLoadでは、私が望むものを達成できます。タグでラベルを隠すことができます。しかし、ループの外では機能しませんでした。

これが私がやっていることです。ご覧ください。

-(void)ViewDidLoad{
int lbl_Pos_X = 580;

for (j=0; j<30; j++) {

    lbl = [[UILabel alloc ] initWithFrame:CGRectMake(lbl_Pos_X, 21, 7, 15)];
    lbl.backgroundColor = [UIColor redColor];
    lbl.tag = j;
    [self.view addSubview:lbl];
    //[lbl release];

    lbl_Pos_X = lbl_Pos_X + 5;


    [lbl viewWithTag:10].hidden = YES;  // here working
    }

     [lbl viewWithTag:12].hidden = YES;  // here  Not working

}

どんなアイデアや提案も大歓迎です。

4

6 に答える 6

1
 [lbl viewWithTag:12].hidden = YES;

ループの側でうまくいかず、ループの外側でlblがnilに等しい、このように直接ラベルにアクセスしない、このよう[lbl viewWithTag:12].hidden = YES;に識別子を使用してラベルにアクセスする

UILabel *label = (UILabel *)[self.view viewWithTag:12];
于 2013-07-25T06:12:23.937 に答える
1

ラベルが追加されたスーパービューからラベルにアクセスできます。

コードを次のように置き換えます。

 [self.view viewWithTag:12].hidden = YES;

編集:特定のタグのラベルを1つだけ非表示にする必要がある場合は、これを使用します:

  for (UIView *view in self.view.subviews) {
        if ([view isKindOfClass:[UILabel class]] && (view.tag == 12)) {
            [view setHidden:YES];
        }
    }

それはあなたのために働くでしょう。

于 2013-07-25T06:02:14.857 に答える