2012-08-01 5 views
0

Quel serait le code pour supprimer des boutons qui a été créé pour ce programme cas par exemple:Comment supprimer des boutons créés par programmation?

for (m=0; m<f;m++) 
    { 
     numerodeboton=partenumero+m+1; 
     //NSLog(@"crear boton2, %i", numerodeboton); 
     UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     [button setBackgroundImage:[UIImage imageNamed:@"boton.png"] forState:UIControlStateNormal]; 
     [button addTarget:self action:@selector(notasCurso)forControlEvents:UIControlEventTouchUpInside]; 
     [button setTitle:[NSString stringWithFormat:@"Botón %d", numerodeboton] forState:UIControlStateNormal]; 
     button.frame = CGRectMake(espacioh+m*(h+d)-z + h/2, y + (l-1)*(v+d) + v/2, 1, 1); 
     button.layer.cornerRadius = 30; 
     button.clipsToBounds = YES; 
     button.layer.borderColor=[UIColor blackColor].CGColor; 
     button.layer.borderWidth=0.01f; 
     [button setTitleColor:[UIColor darkGrayColor] forState:UIControlStateNormal]; 
     button.tag = numerodeboton; 
     [UIView animateWithDuration:0.05*numerodeboton animations:^{ 
      button.frame = CGRectMake(espacioh+m*(h+d)-z, y + (l-1)*(v+d), h, v); 
     }]; 
     [self.view addSubview:button]; 
    } 

Disons que je veux supprimer le bouton avec tag = 3, quel serait le code?

+0

1. 'null' n'est pas Objective-C - c'est' nil', et 2. Cela ferait juste le pointeur sur le bouton nil - la vue l'aurait toujours. De plus, comment voulez-vous même mettre le bouton à «néant» si vous ne sauvegardez pas les références? Vous devriez obtenir la sous-vue en fonction de son tag, mais vous ne le mentionnez pas. – jrtc27

+0

@ahmadalishafiee: Je ne comprends pas du tout – Jack

+0

Eh bien, il a enlevé son commentaire, donc ce sujet sera amusant pour les futurs téléspectateurs. Sur le sujet: J'ai posté une réponse ci-dessous - faites-moi savoir si vous avez des questions à ce sujet. – jrtc27

Répondre

4

La ligne [[self.view viewWithTag:3] removeFromSuperview]; obtiendrait le bouton avec l'étiquette 3, puis retirez-le. Si vous avez plusieurs boutons avec une étiquette de 3, boucle juste à travers eux comme ceci:

while (UIView *aView = [self.view viewWithTag:3]) { 
    [aView removeFromSuperview]; 
} 
+0

super, merci! :) –

+0

Pas de problème - heureux de pouvoir vous aider! – jrtc27

0

Je suppose que la façon plus sûre serait d'utiliser [button removeFromSuperview], cela libérera automatiquement la vue intérieure après qu'elle a été retenue par addSubView:.

Bien sûr, vous aurez besoin d'un moyen de récupérer le bon bouton, vous pourriez

  • récupérer viewWithTag:
  • garder un NSMutableArray ou un tableau C ordinaire d'entre eux si vous avez besoin de plus de vitesse
+0

Voyant qu'il les a étiquetés et demande comment supprimer un bouton avec un tag spécifique, 'viewWithTag:' est de loin la méthode la plus simple. – jrtc27

Questions connexes