2012-07-13 110 views
0

正如標題所說,我正在使用一個UITableView,它連接到由ViewController調用的FetchedResultsController。當UITableView變大時,滾動滯後和滾動條跳躍

當用戶滾動到靠近網格的底部並且我們獲取更多數據以顯示給用戶時,滯後發生。當收到數據並且桌面視圖的內容變大時,滾動會暫時停頓一段時間,然後滾動條跳轉得更高,最後所有事情都會平滑返回。 這發生在:

-(void)controllerDidChangeContent:(FetchedResultsController *)controller { 
    [tableView reloadData]; 
} 

我已經做了所有我發現淘蘋果的Dock的和SO優化。

  1. 我應該重複使用視圖。這對性能幫助最大。 Init的單元幾乎沒有被擊中。

  2. 在使用imageview之前在後臺線程(在上下文中繪圖)中解碼圖像。 (請注意,在我們甚至獲取圖像來替換單元格的「加載」UI之前,會發生口吃)。

  3. 極短且快速的委託方法。

  4. 不透明的手繪視圖。

沒有人有處理的行添加到不阻塞UI線程,並防止滾動跳入一個UITableView任何建議?我試過使用[tableView insertRows ...],但同樣的口吃和滾動條跳躍發生,我認爲這很奇怪。

乾杯, Zed的

+0

找到的任何東西? – 2016-01-26 21:23:40

回答

0

其實,這是很自然的一個UITableView做。不幸的是,它並不優雅。如果您的應用不斷檢索數據並重新加載,那麼這也會影響您的性能。我甚至測試過你的理論,並使用NSMutableArray手動填充UITableView。我給了這個數組幾個值,這足以讓它滯後。 (請記住,沒有涉及額外的方法,即使reloadData沒有涉及,只是基本的委託方法)。