[英]Infinite UITableView Scroll with NSFetchedResultsController
我正在嘗試使用此方法來實現無限滾動的UITableView
該解決方案的核心邏輯是:
這意味着單個單元格的插入或刪除實際上會導致三個插入或刪除。 由於我表的數據源是由NSFetchedResultsController
填充的,因此會導致斷言失敗。
更新(12)之后在現有節中包含的行數必須等於更新(15)之前在該節中包含的行數,加上或減去從該節插入或刪除的行數(已插入0) ,刪除1個),然后加上或減去移入或移出該部分的行數(移入0,移出0)。
在這種情況下,有什么方法可以阻止程序崩潰? 我真的很感謝任何幫助/指針。 謝謝。
在iOS中,這可能會有些棘手,尤其是在您剛入門時。 關鍵是在通知更改之前,更新支持UITableView
的數據源。
例如,如果您有一個支持表視圖的NSArray
,則在對表reloadSection:
調用reloadSection:
之前,您需要刪除或添加項目。
盡管它是最不優化的解決方案,但是您的測試可以隨意調用reloadData
,它會忽略表視圖已緩存的內容,並根據支持表視圖的內容強制其重新計算。
您可以使用NSFetchedResultsControllerDelegate
方法controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:
插入\\刪除3個對象。
為簡單起見,您可以在表視圖中返回3
的節數(這將處理獲取3個對象的副本)。 然后在NSFetchedResultsControllerDelegate
更新UITableView
所有部分中的對象(插入,刪除或移動)。 您應該使用NSFetchedResultsControllerDelegate
行號,並對不同部分分別應用所有更改3次。 請記住要使其與UITableView
數據源方法tableView:numberOfRowsInSection:
保持一致。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.