我試圖實現像Facebook應用程序一樣的無限滾動。UITableView insertRows不鎖定主線程
看來,Facebook以某種方式插入行或重新加載表視圖而不停止當前的滾動。
有誰知道他們是如何實現這一目標的?
當我在滾動過程中調用插入行或重新加載數據時,滾動停止。任何幫助,將不勝感激。
沒有太多的代碼來提供典型的UITableView函數。
[self.tableView insertRowsAtIndexPaths:self.paths withRowAnimation:UITableViewRowAnimationNone];
或
[self.tableView reloadData];
self.paths
被路徑最近通過下一個頁面請求加入。
我還添加了以下方法
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath;
這與reloadData被稱爲現在正常工作。不幸的是,即使這會加速單元格的添加,它仍會鎖定當前的滾動條。
你確定它不是*'insertRowsAtIndexPaths:...'之前完成的處理,它阻止了主線程?據推測你正在解析數據,創建對象等,這可以停止平滑滾動。也許你可以展示你的整個方法。 –
就我的Facebook版本而言,當我到達UITableView的底部時,有一個進度指示器指示它正在加載新內容,並且我無法向下滾動,直到獲取內容。你是什麼意思,不停止當前的滾動? – ramzyo
@ramzyo - 我的意思是,如果你擊中底部並向上滾動,它將繼續滾動而沒有任何跳躍。 – Steve