Xcode8でSwiftコードを2.3から3.0に移行したとき、iOS8のreloadDataの後に、セルの高さの異なるUITableViewが単独でcontentOffsetを変更することが判明しました。しかし、すべてがスウィフトでうまくいった2.3。UITableViewはiOS8のcontentOffsetをswift3で変更します。これはSwift3バグですか?
私はcellForRowAtでcontentOffsetを印刷:とscrollViewDidScroll:以下のような機能:SWIFTの異なるバージョンで
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のバグですか?
UPDATE
私はちょうどiOS10.0.2とiOS8.4とiPhone6pとiPhone5sに自分のコードをテストします。
cellForRowAtの "cell"に書き込んだだけです。indexPath => cell.selectionStyle = .none – iParesh
あなたはバウンス機能をオフにすることができます。 – Anuraj
@iParesh申し訳ありませんが、私の間違いです。私は自分の問題を明確にしなかった。私はtableviewは、reloadDataの呼び出し後にコンテンツのオフセットを変更することを意味します。 –