我已经阅读了很多关于在通过IndexPath和数据源删除行后更新UITableView的问题,它似乎归结为[tableView startUpdates]
,运行您拥有的任何更新代码,然后{{1} }。
尽管对T进行了大量示例,并且使用[tableView endUpdates]
,我似乎无法以任何方式删除我的行,但以下内容描述了这些:
http://www.youtube.com/watch?v=l6ov1FR0R4g&feature=youtu.be(基本上,如果有n> 1行,则该行只会闪烁,如果有n = 1行,它将向外滑动,停止,然后消失)。
我真的很喜欢一种更平滑的行为,也就是说,当行向上滑动时,行会滑出。这是执行删除的代码:
[tableView deleteRowsAtIndexPaths:<indexPaths> withRowAnimation:UITableViewRowAnimationTop];
答案 0 :(得分:1)
我已经完成了两种方式,这两种方式都适用于我。
在执行更新之前删除该项目。
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
//Delete the item from the data source
[self removeProductFromQuoteAtIndexPath:indexPath];
//Do the updates
[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
[tableView endUpdates];
}
}
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
[shipping removeObjectAtIndex:indexPath.row - 1];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
您是否在删除之前对单元格执行任何类型的操作? (比如关闭你的抽屉动画)。