2009-05-27 5 views
16

Voici ce que je suis venu avec:Comment supprimer manuellement une ligne dans UITableView?

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:1]; // my table view has 2 sections 
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationTop]; 

Chaque fois que je construis et courir, il jette l'exception suivante:

mise à jour non valide: nombre incorrect de lignes dans la section 0. Le nombre de Les lignes contenues dans une section existante après la mise à jour doivent être égales au nombre de lignes contenues dans cette section avant la mise à jour, plus ou moins le nombre de lignes ajoutées ou supprimées de cette section.

C'est un peu déroutant. La section est définie sur 1, mais l'exception indique 0.

+4

aimé votre ligne NSIndexPath * indexPath = [NSIndexPath indexPathForRow: 0 lasection: 1] ;. +1 pour vous;) – oberbaum

Répondre

29

Je l'ai compris.

En plus du code mentionné ci-dessus, je dois aussi apporter des modifications à la source de données

[items removeObjectAtIndex:0]; 
+2

C'est correct. –

+8

Pour toute personne qui avait reçu l'erreur, comme je l'étais, déclaré dans le PO; Veuillez vous assurer de modifier votre modèle de données 'before' en modifiant le contenu de UITableView. – Sean

5
- (IBAction)deleteCustomCellWithUIButton:(id)sender 
{ 
    NSLog(@"Message From Custom Cell Received"); 
    NSIndexPath *indexPath = [self.myTableView indexPathForCell:(UITableViewCell *)[[[sender superview] superview] superview]]; 
    NSUInteger row = [indexPath row]; 
    [self.myDataArray removeObjectAtIndex:row]; 
    [self.myTableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
} 
+1

Je recommande d'ajouter '[self.myTableView beginUpdates];' avant de commencer à changer. Et '[self.myTableView endUpdates];' une fois que vous avez terminé. – thedp

Questions connexes