iOS - UITableView刷新表正常吗?

时间:2011-10-18 00:54:05

标签: iphone ios uitableview

我的tableView中有很多数据和很多行。 当数据发生变化时我想更新屏幕上的可见单元格,我真的不想使用reloadData,因为这是一个昂贵的调用。

是否有可能以某种方式更新可见细胞? 我试着打电话:beginUpdate& endUpdate在桌面上,但这不能一直有效吗?

有什么建议吗?

3 个答案:

答案 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];

    }
}