當我在Xcode8中將我的swift代碼從2.3遷移到3.0時,發現UITableView具有一些不同高度的單元格會在iOS8中的reloadData之後自行更改contentOffset。但swift2.3中的一切都很好。和scrollViewDidScroll:UITableView將更改iOS8中的contentOffset與swift3,這是一個Swift3錯誤?
我在cellForRowAt印刷contentOffset功能象下面這樣:與不同版本的迅速
func scrollViewDidScroll(_ scrollView: UIScrollView) {
print("In scroll: \(scrollView.contentOffset)")
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
print("In cellForRow offset: \(tableView.contentOffset)")
//...
}
相同的代碼運行,具有不同的結果。
在swift3,reloadData後,它將在iOS8上改變contentOffset本身。
在swift2.3,如果沒有這個問題。
我的整個測試項目上傳了我的GitHub倉庫,您可以從https://github.com/heqichang/swift3-tableview-issue中檢查或git克隆,然後使用iOS8在您的手機中運行我的代碼。
這是swift3的bug嗎?
UPDATE
我只是測試我的iPhone5s與iOS8.4和iPhone6p與iOS10.0.2代碼。這段代碼IndexPath:
cell.selectionStyle = .none
或情節串連圖板在檢查:
你剛纔在cellFor的cell中寫了cellForRowAt indexPath => cell.selectionStyle = .none – iParesh
你可以關閉反彈功能可能會有幫助。 – Anuraj
@iParesh對不起,我的錯。我沒有澄清我的問題。我的意思是在調用reloadData之後tableview會改變內容偏移量。 –