2016-10-18 15 views
-1

J'ai plusieurs valeurs uilabels. Je dois vider les UILabels self.lbl_title lorsque je clique sur le bouton NEXT.Valeurs UILabel multiples vides

Comment est-ce que je peux faire ceci?

self.lbl_title.hidden=true ne fonctionne pas dans ce cas.

-(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

Voulez-vous définir un texte d'étiquette vide? self.lbl_title.text = @ ""; –

+0

Je vérifie votre code. J'ai trouvé que vous n'avez pas initialisé self.lbl_title. Sans initialiser vous n'avez pas caché une étiquette. Je pense que quelque chose comme ça arrive – Wos

+1

Chaque fois que fetchdata est appelée, vous créez 10 nouvelles étiquettes, en les assignant chacune à 'self.lbl_title'. A la fin de la boucle, vous n'avez qu'une référence à la 10ème étiquette. Ajoutez-les tous à un tableau à la place. –

Répondre

1

Si vous voulez effacer le texte simplement l'étiquette, vous pouvez utiliser

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

J'ai essayé cela aussi. il est juste vide la dernière valeur. @ olga-nesterenko – diksha

+0

il peut être mieux pour vous de stocker dans votre propriété pas l'étiquette elle-même, mais le tableau des étiquettes, que vous ajoutez dans une boucle. donc, quand vous avez besoin de les effacer tous, vous n'avez qu'à itérer votre tableau. –

0

Vous pouvez parcourir toutes les sous-vues à l'intérieur de votre ScrollView et trouver l'étiquette et le vider ou le cacher. Quelque chose comme:

[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] 
    } 
    }]; 

Ou si vous avez plusieurs UILabels, vous pouvez attribuer l'étiquette spécifique une valeur d'étiquette comme 100 et utilisation:

[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

Vous pouvez également essayer avec reload scrollview parce que vous devez effacer vieux refrence de UILable

Retirez vieux UILable puis appelez votre méthode: [self fetchdata] il fonctionnera un air de défi

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