Comment puis-je ajouter un bouton personnalisé sur un UITableViewCell
, puis supprimer la cellule avec ce bouton sans utiliser Interface Builder et Custom Cell?comment ajouter un bouton sans utiliser de cellule personnalisée sur un UITableView?
Répondre
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.
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
.
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. –
La méthode canEditRowAtIndexPath ajoute automatiquement un bouton de suppression sur chaque ligne en mode édition. Essayez-le :) – tmadsen
mais je veux le faire avec un bouton personnalisé. –