如何在iPhone上用手指滑动删除单元格

时间:2010-07-22 06:03:41

标签: iphone objective-c uitableview

我试图用手指滑动删除tableView上的单元格(就像最近的调用一样)。我知道我需要实施:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath    
{  
    NSArray *index = [[NSArray alloc]initWithObjects:indexPath];  
    [self.tableView deleteRowsAtIndexPaths:index withRowAnimation: UITableViewRowAnimationNone];  
}

但是当我滑动手指时,我开始使用此功能,而当我尝试删除单元格时,第二行会出现错误:

  

由于未捕获的异常而终止应用   'NSInternalInconsistencyException',原因:'无效更新:无效   第0节中的行数。包含在中的行数   更新后的现有部分(4)必须等于数量   更新(4)之前该部分中包含的行,加号或减号   从该部分插入或删除的行数(插入0,   1删除)。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

致电时

[self.tableView deleteRowsAtIndexPaths:index withRowAnimation: UITableViewRowAnimationNone];

表视图将尝试重新加载,然后调用委托方法

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

由于您删除了一行,为了使必要的动画正常工作,表格视图要求使用与 deleteRowsAtIndexPaths:withRowAnimation:删除的行数相同的行数进行更改。您获取的错误消息尝试解释该依赖项。它表示你在表格视图中有 4 行,你删除了 1 ...但是当表格视图询问你删除后有多少行时,你说 4 ,而不是 4-1 = 3 它预期......然后它开始关闭,大概是因为it did not want to live in a world where the laws of natural numbers could not explain reality

例如,如果您使用 NSArray * 来填充tableView,则应该在调用 deleteRowsAtIndexPaths:withRowAnimation:<时同时从数组中删除相应的对象: /强>