2012-03-27 3 views
2

J'essaie de créer un UIButton par programmation. J'ai un bouton appelé "addCash" (qui a déjà été créé dans le constructeur de l'interface), en appuyant sur ce bouton, je veux qu'un autre bouton apparaisse dynamiquement. Ce bouton fonctionne bien dans viewDidLoad, mais ce n'est pas ce que je veux car "addCash" doit être tapé avant que ce nouveau bouton ne soit créé. Voilà ce que j'ai jusqu'à présent ...Appuyez sur UIButton pour créer un autre UIButton par programme

-(IBAction) addCash{ 
UIButton *theButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain]; 
theButton.frame = CGRectMake(80, 50, 150, 40); 
[theButton setTitle:@"title" forState:UIControlStateNormal]; 
[theButton addTarget:self action:@selector(test:) forControlEvents:UIControlEventTouchUpInside]; 
[theButton setBackgroundImage:[UIImage imageNamed:@"edit.jpg"] forState:UIControlStateNormal]; 

[self.view addSubview:theButton]; 
} 
+4

Pourquoi créer le bouton par programmation? Pourquoi ne pas l'avoir créé dans IB au préalable mais avec 'hidden = YES', et l'afficher quand on appuie sur le premier bouton? – yuji

+3

Vous fuyez 'theButton'. Pourquoi le retenez-vous? –

+0

pourquoi avez-vous omis l'expéditeur de la signature de la méthode? c'est-à-dire - (IBAction) addCash: (id) expéditeur {...} ?? – bennythemink

Répondre

1

Si vous ajoutez simplement beaucoup de boutons utilisent UITableViewwith custom cell. Si vous ajoutez juste de nouveaux boutons pour voir vous obtiendrez un problème de performance - tous les boutons seront chargés simultanément. UITableView peut gérer cette situation et décharger les cellules inutilisées.