2016-10-18 3 views
-1

複数のuilabels値があります。 NEXTボタンをクリックすると、UILabels self.lbl_titleを空にする必要があります。空の複数のUILabel値

どうすればいいですか?

self.lbl_title.hidden=trueこの場合は機能しません。

-(void)fetchdata 
{ 

    int y=10; 
    if(arrayquestion.count!=0){ 
    for (int i=0;i<arrayquestion.count;i++) 
    { 
     CGSize textsize = [[[arrayquestion objectAtIndex:i] valueForKey:@"question_title"] sizeWithFont:[UIFont systemFontOfSize:18] constrainedToSize:CGSizeMake(850, MAXFLOAT) lineBreakMode:NSLineBreakByCharWrapping]; 

     self.lbl_title=[[UILabel alloc] init]; 
     self.lbl_title.frame= CGRectMake(60,y-3,900,textsize.height+5); 
     self.lbl_title.text=[[arrayquestion objectAtIndex:i] valueForKey:@"question_title"]; 
     self.lbl_title.backgroundColor=[UIColor clearColor]; 
     self.lbl_title.numberOfLines=0; 
     self.lbl_title.font=[UIFont systemFontOfSize:18]; 
     y=y+textsize.height+30; 

     [self.scrll_vw addSubview:self.lbl_title]; 

    } 

    } 
    else{ 
     NSLog(@"%s","Yes"); 
     self.lbl_title.hidden = YES; 

    } 
} 

-(IBAction)Next:(id)sender 
{ 
    [arrayquestion removeAllObjects]; 
     [self fetchdata]; 
} 
+0

ラベルテキストを空白に設定しますか? self.lbl_title.text = @ ""; –

+0

コードを確認します。 self.lbl_titleを初期化していないことがわかりました。初期化せずに、ラベルを隠すことはありませんでした。私はこう考えていると思います。 – Wos

+1

fetchdataが呼び出されるたびに、10個の新しいラベルを作成し、それぞれを 'self.lbl_title'に順番に割り当てます。ループの終わりには、10番目のラベルのみが参照されます。それらをすべて配列に追加してください。 –

答えて

1

あなただけのラベルテキストをクリアしたい場合、あなたはあなたがあなたのscrollView内のすべてのサブビューを反復処理し、ラベルを見つけ、それを空にしたり、それを隠すことができ

self.lbl_title.text = @""; 
+0

これも試しました。最後の値だけが空です。 @ olga-nesterenko – diksha

+0

ラベル自体ではなく、ループで追加するラベルの配列をプロパティに格納する方が良い場合があります。だから、それらをすべてクリアする必要があるときは、配列を反復するだけです。 –

0

を使用することができます。以下のような何か:

[self.view.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { 

    //if you have only one label use the following: 
    if ([obj isKindOfClass:[UILabel class]]){ 
     [obj setHidden:YES] 
    } 
    }]; 

それとも、複数のUILabelsを持っている場合、あなたは特定のラベル100のようなタグ値を割り当て、使用することができます。

[self.view.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { 

     //if you have only one label use the following: 
     if (obj.tag == 100){ 
      [obj setHidden:YES] 
     } 
    }]; 
1

あなたはクリアする必要があるので、あなたはリロードscrollviewでも試すことができますそれはふてくされ

を動作します [self fetchdata]UILable

の古いrefrenceは、あなたのメソッドを呼び出して、古いUILableを削除します

-(IBAction)next:(id)sender 
{ 
for (UILabel *view in self.contentView.subviews) 
    { 
     if (![UILabel isKindOfClass:[UIImageView class]]) 
      [UILabel removeFromSuperview]; 
    } 
    [arrayquestion removeAllObjects]; 
     [self fetchdata]; 
} 
関連する問題