2014-02-07 28 views
2

通過實施tableView:estimatedHeightForRowAtIndexPath:來使用估計的單元高度時,將UITableView頂部滾動到頂部的正確方法是什麼?使用估計的單元高度滾動到頂部

我注意到,如果有足夠的估計錯誤,通常的方法不一定會滾動到頂端。

[self.tableView setContentOffset:CGPointMake(0, 0 - self.tableView.contentInset.top) animated:animated]; 
+0

嗯這不是通常的方法。 – Desdenova

+0

@Desdenova什麼是?我想滾動到頂部,而不是第一個'indexPath'。 – hpique

+0

滾動到一行(NSIndexPath)是唯一記錄的Apple滾動方式。設置內容偏移量與底層滾動視圖混淆。 – Desdenova

回答

1

我遇到過類似的問題(我沒有試圖將tableview手動滾動到頂部,但點擊狀態欄時視圖沒有正確滾動)。

我想出瞭解決這個問題的唯一方法,就是確保在你的tableView:estimatedHeightForRowAtIndexPath:方法中,如果你知道它的話,你將返回實際的高度。

爲了提高效率,我的實現緩存了調用tableView:heightForRowAtIndexPath:的結果,所以我只是在我的估計中查找這個緩存,看看我是否已經知道真正的高度。

我認爲問題來自於tableView:estimatedHeightForRowAtIndexPath:被優先於tableView:heightForRowAtIndexPath:優先調用,即使向上滾動已經被渲染的單元格。只是一個猜測。

0

如何tableView.scrollToRow靈感計算?爲我解決了這個問題。

夫特3示例

tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .top, animated: true)