I know this has been asked before 50 times but I have looked through all the other answers and didn't find anything that could fix my issue.
Anyway this is my code:
NSMutableArray *cellIndicesToBeDeleted = [[NSMutableArray alloc] init];
for (int i = 0; i < [thetableView numberOfRowsInSection:0]; i++) {
NSIndexPath *p = [NSIndexPath indexPathForRow:i inSection:0];
if ([[thetableView cellForRowAtIndexPath:p] accessoryType] == UITableViewCellAccessoryCheckmark) {
[cellIndicesToBeDeleted addObject:p];
[self.cellArray removeObjectAtIndex:i];
}
}
[thetableView deleteRowsAtIndexPaths:cellIndicesToBeDeleted withRowAnimation:UITableViewRowAnimationLeft];
[cellIndicesToBeDeleted release];
And when I execute this code I get this crash log:
Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (2) must be equal to the number of rows contained in that section before the update (2), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).'
Does anyone see what I am doing wrong?
Newish code:
NSMutableIndexSet *mutableIndexSet = [[NSMutableIndexSet alloc] init];
NSMutableArray *cellIndicesToBeDeleted = [[NSMutableArray alloc] init];
for (int i = 0; i < [thetableView numberOfRowsInSection:0]; i++) {
NSIndexPath *p = [NSIndexPath indexPathForRow:i inSection:0];
if ([[thetableView cellForRowAtIndexPath:p] accessoryType] == UITableViewCellAccessoryCheckmark) {
[cellIndicesToBeDeleted addObject:p];
[mutableIndexSet addIndex:p.row];
}
}
[self.cellArray removeObjectsAtIndexes:mutableIndexSet];
[thetableView deleteRowsAtIndexPaths:cellIndicesToBeDeleted withRowAnimation:UITableViewRowAnimationLeft];
[cellIndicesToBeDeleted release];
[mutableIndexSet release];
UITableViewDelegatemethods yourself? Go back to the drawing board and figure out exactly what you're trying to do. Maybe it would be useful to outline your goal here in the question. Like, what kind of data are you showing? Why are removing some items when they have a checkmark? - Kyle Truscottianyway, so you skip the next neighbor. Iterate the array backwards to fix this problem. - Sergey KalinichenkocellArrayin the middle of the loop. That means things likecellForRowAtIndexPathare going to be confused with what you're asking of them (since they are dependent on the count of that array). So you can change up the code here to remove stuff fromcellArrayafter the loop much like you do withdeleteRowsAtIndexPaths. But again, I would find another way to do this that isn't dependent on interacting with the tableviewdelegate. - Kyle Truscott