2016-01-23 87 views
1

在我的代碼中,我重寫了tableView:willDisplayCell,當顯示最後一行時,我開始加載更多數據。當這些數據進入時,我呼叫insertRowsAtIndexPaths添加行。當插入更多行時,UITableView滾動到頂部

這通常工作(tableview的滾動位置不會改變),但我注意到,如果我overscroll,而不是放手(滾動tableview結束),tableview將跳轉到頂部insertRowsAtIndexPaths在數據加載時被調用。

我爲我的細胞高度使用UITableViewAutomaticDimension/Autolayout,因爲每個細胞根據其包含的數據而有不同的高度。我怎樣才能避免這個問題?理想情況下,如果數據加載和tableview過度滾動,一旦數據進來,滾動位置將停留在overscroll上。

+0

我從UITableViewAutomaticDimension切換到計算每帶有虛擬單元的行高,此問題不再發生。仍然想知道是否可以使用UITableViewAutomaticDimension解決問題。 – untitled

回答

1

您可以在底部單元格indexpath上創建引用,並在無論哪個函數導致它移動回到頂部,呼叫

[self.tableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionNone animated:YES];

SWIFT 3

self.tableView.scrollToRow(at: indexPath, at: UITableViewScrollPosition.none, animated: true) 
+0

如果用戶在行的中間滾動,是不是會導致tableview捕捉到行的開頭? – untitled

+0

我以爲只有當用戶滾動到底部時纔會發生這種情況? – MikeG

+0

如果是這樣,當新的行加載時,表視圖仍然會捕捉到前一行的權利?我試圖得到的行爲是tableview停留在overscroll位置,因爲新數據加載在先前爲過度滾動區域的空間中。作爲參考,打開Facebook應用程序並滾動到Feed的底部;如果你過度滾動tableview將停留在帖子加載的位置。 – untitled

相關問題