TableView deleteRowsAtIndexPaths:withRowAnimation非常慢

时间:2014-09-05 09:35:38

标签: ios uitableview delete-row

我有一张桌子,可能有几百行,都有不同的高度。每当用户删除一行时,呼叫:

    [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];

需要很长时间才能执行(大约2.5秒)。

是否有替代此呼叫或以任何方式加快速度?谢谢!

2 个答案:

答案 0 :(得分:1)

你可以试试这个。它有点不道德,但它就像一个魅力。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
 if([textArray count]>0){
  [self deleteRowAtIndexPath:indexPath.row];
} //method fired when u select a row, which calls a method
}

-(void)deleteRowAtIndexPath:(int) indexPath{ //this method removes the data in the array from which the tableview is being populated
[textArray removeObjectAtIndex:indexPath];
[self.tableView reloadData]; //after deleting the data from the array it reloads the tableview
 }

textArray是一个NSMutableArray,正在从中填充tableview。

但是这个dsnt有任何动画。

答案 1 :(得分:1)

使用estimatedRowHeight的{​​{1}}方法加快速度。

  

提供行高的非负估计可以提高加载表视图的性能。如果表包含可变高度行,则在加载表时计算所有高度可能会很昂贵。使用估计允许您将几何计算的一些成本从加载时间推迟到滚动时间。

在任何情况下,您都应该使用仪器测量代码的哪些部分占用的时间最长。