0
我有處理設備地址簿的表,該表可以輕鬆地有500多個聯繫人。 除了表得到更新,每3秒鐘,然後在每次更新運行代碼有很多行的UITableView性能
[tableContacts beginUpdates];
[tableContacts reloadRowsAtIndexPaths:arr withRowAnimation:UITableViewRowAnimationNone];
[tableContacts endUpdates];
,我更新的小區和一個圖像(存在)的文本。 單元格的所有計算都是後臺線程上的句柄。問題是大多數時候滾動不夠流暢。 當我觸摸表開始滾動然後滾動沒有響應1秒左右(我認爲是因爲表刷新在這個時間)。
所以問題是如何處理非常長的表在短時間內獲取數據並需要刷新?
我猜對於UITableView的工作原理存在誤解。方法'cellForRowAtIndexPath'總是創建一個新的單元格(可能重複使用一個循環的單元格)。它永遠不會返回現有的表。它只被'UITableView'調用。如果您自己調用它,則會創建一個永不顯示的新表格單元格。 – Codo
沒有誤解。在tableView之外調用'cellForForRowAtIndexPath'創建和顯示循環爲您提供現有單元格的引用,如果單元格已創建並顯示。我同意,如果'indexPath'在'indexPathsForVisibleRows'數組內,這需要額外的檢查。無論如何 - 如何在不重新加載行的情況下從NSFetchedResultsControllerDelegate方法(或任何其他更新方法)更新單元格的屬性? –