我在我的tableView中有很多数据和很多行。 当数据发生变化时我想更新屏幕上的可见单元格,我真的不想使用reloadData,因为这是一个昂贵的调用。iOS - UITableView正确刷新表?
是否有可能以某种方式更新可见单元格? 我试过拨打电话:beginUpdate
& endUpdate
在桌子上,但这并不是一直工作?
有什么建议吗?
我在我的tableView中有很多数据和很多行。 当数据发生变化时我想更新屏幕上的可见单元格,我真的不想使用reloadData,因为这是一个昂贵的调用。iOS - UITableView正确刷新表?
是否有可能以某种方式更新可见单元格? 我试过拨打电话:beginUpdate
& endUpdate
在桌子上,但这并不是一直工作?
有什么建议吗?
尝试调用“deleteRowsAtIndexPaths”,UITableView中的方法,您从数据源中删除模型之后。例如,如果您在编辑模式下删除一行,则可以编写类似下面的代码。需要注意的是,在第一行的“如果”语句从数据源中的对象,而第二行清理表:
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
[[[[[ItemsStore sharedStore] parameterArray] objectAtIndex:indexPath.section] objectForKey:@"data"] removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
对于斯威夫特3:
tableView.reloadRows(at: tableView.indexPathsForVisibleRows!, with: .none)
你肯定reloadData是昂贵?我希望它很便宜,只要你不使用可变高度。它将查询表中有多少部分,每部分有多少行,并清除其缓存。但是细胞会根据需求重新加载,这意味着只有可见细胞应该重新加载。 –
如果你要刷新所有的_visible_单元格,那么reloadData不应该**那**很贵。 – Nevin
@StevenFisher是的,在我的情况下,它是非常昂贵的,我有很多的计算,如所需的单元格高度和一些网络调用。所以我应该说我的情况很贵。 – aryaxt