2009-05-12 8 views

Répondre

8

Si vous voulez vraiment ajouter un bouton personnalisé sans sous-classement, il suffit d'ajouter le bouton à contentView de la cellule:

[cell.contentView addSubview:customButton]; 

Vous pouvez définir toutes les caractéristiques du bouton: cadre, cible, sélecteur, etc ... Ad a ensuite utilisé l'appel ci-dessus pour l'ajouter à la cellule.

UIButton *customButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
customButton.frame=//whatever 
[customButton setImage:anImage forState:UIControlStateNormal]; 
[customButton setImage:anotherImage forState:UIControlStateHighlighted]; 
[customButton addTarget:self action:@selector(delete) forControlEvents: UIControlEventTouchUpInside]; 
//yadda, yadda, ..... 

Vous pouvez marquer aussi bien

customButton.tag = 99999; 

Vous pouvez trouver plus tard:

UIButton *abutton = (UIButton*) [cell.contentView viewWithTag:99999]; 

Vous devez décider quand il faut ajouter le bouton, peut-être sur la sélection de cellules, peut-être en mode édition ... il suffit de mettre le code dans la méthode déléguée de votre choix.

1

Si le seul but du bouton est d'offrir la suppression, vous devriez regarder dans UITableViewDataSource qui a une méthode appelée - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath. Mettre en œuvre comme si:

- (BOOL)tableView:(UITableView *)tableView 
canEditRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return YES; 
} 

Et puis mettre en œuvre:

- (void)tableView:(UITableView *)tableView 
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // Database removal code goes here... 
} 

Pour utiliser ces méthodes, laissez votre UITableViewController mettre en œuvre le protocole UITableViewDataSource en faisant quelque chose comme:

MyClass : UITableViewController <UITableViewDataSource> 

dans votre tête fichier, et n'oubliez pas de définir la source de données viewController à self.

+0

qu'en est-il bouton je veux faire tout cela quand je clique sur un bouton personnalisé et le bouton doit être créé sans utiliser le constructeur de l'interface et la cellule personnalisée. –

+0

La méthode canEditRowAtIndexPath ajoute automatiquement un bouton de suppression sur chaque ligne en mode édition. Essayez-le :) – tmadsen

+0

mais je veux le faire avec un bouton personnalisé. –