Le button Supprimer UITableView n'apparaît pas

Lorsque j'appuie sur le button d'édition, j'obtiens l'icône de suppression ronde à gauche de l'élément. Lorsque j'appuie sur l'icône de suppression dans la cellule, elle «tourne» mais le button de suppression n'apparaît pas, ainsi mon commitEditingStyle n'est jamais appelé parce que je n'ai aucun button de suppression à appuyer.

Juste pour le fun … Je change la cellule en Insert j'obtiens l'icône plus … Je l'appuie et commitEditingStyle est appelé.

Je ne comprends pas pourquoi je ne reçois pas le button de suppression.

J'ai un UIViewController que je montre dans un popover. J'ajoute un UITableView à aimer alors …

audioTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 44, self.view.frame.size.width, 303)]; audioTable.delegate = self; audioTable.dataSource = self; [self.view addSubview:audioTable]; 

J'utilise une cellule personnalisée avec deux labels pour afficher du text.

Voici la cellule personnalisée initWithFrame …

 primaryLabel = [[UILabel alloc]initWithFrame:CGRectMake(25 ,8, 275, 25)]; primaryLabel.font = [UIFont systemFontOfSize:14]; secondaryLabel = [[UILabel alloc]initWithFrame:CGRectMake(25 ,28, 275, 25)]; secondaryLabel.font = [UIFont systemFontOfSize:12]; [self.contentView addSubview:primaryLabel]; [self.contentView addSubview:secondaryLabel]; [self.contentView sendSubviewToBack:primaryLabel]; [self.contentView sendSubviewToBack:secondaryLabel]; 

J'ai un button de suppression dans une barre d'outils dans le controller de vue qui est connecté à l'appel d'édition. Voici ce que je fais dans l'appel d'édition qui est appelé bien parce que je reçois le symbole de suppression dans la cellule …

 if([self.audioTable isEditing]) { [button setTitle:@"Edit"]; [super setEditing:NO animated:NO]; [self.audioTable setEditing:NO animated:YES]; } else { [button setTitle:@"Done"]; [super setEditing:YES animated:NO]; [self.audioTable setEditing:YES animated:YES]; } 

J'ai mis en place ce qui suit …

 -(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { return UITableViewCellEditingStyleDelete; } -(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { //i don't think i need to implement this really return YES; } -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { //do delete stuff } } 

Comme je l'ai dit tout fonctionne normalement, le button presse et tout fonctionne … juste pas de button de suppression.

J'ai rencontré le même problème. Le problème était que l'image de ma table n'était pas correctement redimensionnée à l'intérieur du popover. En réalité, le button de suppression était affiché, mais il était en dehors des limites de la popover donc il ne pouvait pas être vu.

J'ai corrigé ceci en tableView la tableView redimensionne correctement. Pour moi, cela signifiait régler le autoresizingMask de autoresizingMask comme ceci:

 self.tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

La raison pour laquelle d'autres ont pu résoudre ce problème en passant à UITableViewController est que sa tableView est correctement redimensionnée.

J'ai dû contourner cela en utilisant un mécanisme différent. J'ai fait un test et quand j'ai utilisé un UITableViewController cela a bien fonctionné. Lorsque j'ai ajouté un UITableView à un UIViewController , implémentant la même chose que l' UITableViewController , cela ne fonctionne pas. Je ne sais pas ce que j'ai manqué, mais en utilisant le UIViewController par opposition à UITableViewController le button de suppression n'apparaît pas.

Je sais que vous l'avez corrigé en utilisant un UITableViewController mais je ne pouvais pas le faire dans mon cas.

En regardant autour je viens de find la réponse ici , vous avez besoin de plus de plomberie pour faire le travail. Heureusement c'est assez facile. Ajoutez ceci au UIViewController contenant une reference à votre UITableView

 // objc - (void)setEditing:(BOOL)editing animated:(BOOL)animated { [super setEditing:editing animated:animated]; [tableView setEditing:editing animated:animated]; } // swift override func setEditing(editing: Bool, animated: Bool) { super.setEditing(editing, animated: animated) self.tableView.setEditing(editing, animated: animated) } 

Le problème est que vous ajoutez les labels en utilisant addSubview: à la vue de contenu de la cellule, et comme elles sont ajoutées en dernier, elles cachent les autres parties de la cellule. Poussez-les en arrière-plan en appelant:

 [cell.contentView sendSubviewToBack:label]; 

N'oubliez pas de définir le style du button de suppression

 -(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { return UITableViewCellEditingStyleDelete; }