我有一张桌子,可能有几百行,都有不同的高度。每当用户删除一行时,呼叫:
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
需要很长时间才能执行(大约2.5秒)。
是否有替代此呼叫或以任何方式加快速度?谢谢!
答案 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}}方法加快速度。
提供行高的非负估计可以提高加载表视图的性能。如果表包含可变高度行,则在加载表时计算所有高度可能会很昂贵。使用估计允许您将几何计算的一些成本从加载时间推迟到滚动时间。
在任何情况下,您都应该使用仪器测量代码的哪些部分占用的时间最长。