2011-05-25 2 views
0

J'ai créé des boutons sont programmés et définir les balises de bouton.Comment faire pour supprimer les doublons tag tag dans l'iPhone?

Voir Avez-Charge:

J'ai créé un point de vue et a ajouté les boutons sont en vue sous ce point de vue.

-(void) viewDidLoad 
{ 
    self.answerSubview = [[UIView alloc] initWithFrame:CGRectMake(0, 100, 320, 230)]; 

    self.answerSubview.backgroundColor = [UIColor clearColor]; 

    [self.view addSubview:answerSubview]; 

    [self buttonCreation]; 
} 

-(void) buttonCreation{ 
int x =100; 

for(i = 0; i < 4; i++) { 

     UIButton *answerBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

     [answerBtn setFrame:CGRectMake(40, x, 260, 40)]; 

     answerBtn.tag = ar[i];  

     [answerBtn setTitle:[answerList objectAtIndex:i] forState:UIControlStateNormal]; 

     [self.answerSubview addSubview:answerBtn]; 

     x = x+50; 
} 
} 

Et je veux définir l'image d'arrière-plan pour le certain indice du bouton, lorsque le temps est terminé,

-(void) timerFinished 
{ 
     for (UIView* view in [self.answerSubview subviews]) { 

    if([view isKindOfClass:[UIButton class]]){ 

     UIButton *btn = (UIButton*)view; 

    NSLog(@"button value %d", btn.tag); 

     if(btn.tag == correctIndex) 
     { 
     [btn setBackgroundImage:[UIImage imageNamed:@"selected_correct_answer.png"] forState:UIControlStateNormal]; 

     } 
     } 
    } 

    } 

Mais chaque fois, les valeurs de variables sont ajoutés dans la pile, je ont des nombres générés au hasard et le mettre dans les balises de bouton, alors maintenant il est comme, résultat:

Première, deuxième fois,

0    0 
    1    1 
    3    3 
    2    2 
       3 
       1 
       2 
       0 

(En fait mon résultat attendu est 3 1 2 0). Alors comment est-ce que je pourrais enlever les valeurs précédentes d'étiquette et obtenir les valeurs d'étiquette correctes à la fois.

S'il vous plaît aidez-moi.

Répondre

0

Vous pouvez envisager deux choses. Puisque la seule chose qui change à chaque itération est le texte sur le bouton. Vous pourriez probablement les réutiliser. Installez une fois et mettez-les dans des ivars. À chaque itération, changez le texte et l'étiquette du bouton.

Si ce n'est pas le chemin qui vous intéresse, vous pouvez probablement envoyer un message removeFromSuperview à ces quatre objets de bouton.

Cependant, la première méthode est une meilleure approche à mon avis car elle supprimera le cycle continu de création-destruction.

Questions connexes