2010-07-22 5 views
0

J'essaye de supprimer une cellule sur tableView avec glisser mon doigt (comme sur l'appel récent). Je sais que je dois mettre en œuvre:Comment supprimer une cellule avec le doigt glissant sur l'iPhone

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath  
{ 
    NSArray *index = [[NSArray alloc]initWithObjects:indexPath]; 
    [self.tableView deleteRowsAtIndexPaths:index withRowAnimation: UITableViewRowAnimationNone]; 
} 

Mais quand je glisse le doigt, je reçois à cette fonction et dans la deuxième rangée quand je suis en train de supprimer la cellule une erreur get:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (4) must be equal to the number of rows contained in that section before the update (4), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted).

Quelqu'un peut-il aider?

Répondre

2

Lorsque vous appelez

[self.tableView deleteRowsAtIndexPaths:index withRowAnimation: UITableViewRowAnimationNone]; 

La vue de la table va essayer de recharger, ce qui appelle la méthode délégué

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

Puisque vous avez supprimé une ligne, pour les animations nécessaires pour fonctionner correctement , la vue de table nécessite le nombre de lignes pour modifier du même montant que vous avez supprimé avec deleteRowsAtIndexPaths: withRowAnimation:. Le message d'erreur que vous obtenez essaie d'expliquer cette dépendance. Il dit que vous aviez lignes dans la vue de la table, vous avez supprimé ... mais quand la vue de la table vous a demandé combien de lignes vous avez eu après la suppression, vous avez dit à nouveau au lieu de 4-1 = 3 qu'il attendait ... Il s'est ensuite mis à l'écart lui-même sans doute parce que it did not want to live in a world where the laws of natural numbers could not explain reality.

Par exemple, si vous utilisez un NSArray * pour remplir votre tableView, vous devez effacer les objets correspondants à partir du tableau en même temps que vous appelez deleteRowsAtIndexPaths: withRowAnimation:.

Questions connexes