UITableView单元格无意义地删除

时间:2013-12-14 00:14:22

标签: ios objective-c uitableview

我已经阅读了很多关于在通过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];

1 个答案:

答案 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];
    }
}

您是否在删除之前对单元格执行任何类型的操作? (比如关闭你的抽屉动画)。