我在我的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