我的tableView中有很多数据和很多行。 当数据发生变化时我想更新屏幕上的可见单元格,我真的不想使用reloadData,因为这是一个昂贵的调用。
是否有可能以某种方式更新可见细胞?
我试着打电话:beginUpdate
& endUpdate
在桌面上,但这不能一直有效吗?
有什么建议吗?
答案 0 :(得分:87)
你可以:
[tableView reloadRowsAtIndexPaths:[tableView indexPathsForVisibleRows]
withRowAnimation:UITableViewRowAnimationNone];
答案 1 :(得分:0)
对于Swift 3:
tableView.reloadRows(at: tableView.indexPathsForVisibleRows!, with: .none)
答案 2 :(得分:-1)
在从数据源中删除模型后立即尝试调用'deleteRowsAtIndexPaths'这一UITableView方法。例如,如果要在编辑模式下删除行,则可以编写类似下面的代码。请注意,'if'语句中的第一行从数据源中删除对象,第二行清除表:
-(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];
}
}