Happy 14th Baktun everybody!
This thing has been bugging me for a while, and I’ve googled to and fro, and also checked SO for an answer, but I just can’t seem to grasp the answers and apply it to my app. If some of you would be so kind to help out, that would be appreciated!
I got the following function that deletes a cell from an UITableView when a stepper reaches 0.
I want the cell to be animated to the left, so when you press the – sign you’ll see the cell swipe out of view. I set the sender.tag to the [[cell stepper]setTag:indexPath.row]; in CellForRowAtIndexPath.
- (void)stepperChanged:(UIStepper *)sender
{
WinkelWagen *ww = [WinkelWagen sharedWinkelWagen];
BWBand *band = [ww.winkelWagenArray objectAtIndex: sender.tag];
NSDecimalNumber *nummer = [[NSDecimalNumber alloc]initWithFloat:sender.value];
band.winkelmandjeAantal = nummer;
[sender setValue:[band.winkelmandjeAantal doubleValue]];
// Remove the cell and object from WinkelWagen if stepper.value turns 0
if (sender.value == 0)
{
NSArray *deleteIndexPaths = [NSArray arrayWithObjects:
[NSIndexPath indexPathForRow:sender.tag inSection:0],
nil];
[ww.winkelWagenArray removeObject:band];
[self.tableView beginUpdates];
[self.tableView reloadData];
[self.tableView deleteRowsAtIndexPaths:deleteIndexPaths withRowAnimation:UITableViewRowAnimationNone];
if ([winkelmandjeData count] == 0)
{
NSArray *addIndexPaths = [NSArray arrayWithObjects:
[NSIndexPath indexPathForRow:0 inSection:0],
nil];
[self.tableView insertRowsAtIndexPaths:addIndexPaths withRowAnimation:UITableViewRowAnimationFade];
}
[self.tableView endUpdates];
}
}
UPDATE:
I’ve worked it out with [[self.tableview]reloaddata] but then the animation doesn’t play. Can someone tell me how I should handle the data and the animation properly?
Thanks!
I see there something you could have a problem with, but don’t know if it is an answer to your question. In your
if ([shoppingCartData count] == 0)you are adding a row to the table, but the data source remains the same. That could result in a crash.Also, before the
if, your data source seem to beww.shoppingCartArray, but in theifyou are checking the count ofshoppingCartData.Hope this helps!