【Swift5】UITableView の更新完了後にトップに移動させる

表題の通り、reloadData() 完了後に何か処理したい場合、
公式的なやり方(ハンドラとかデリゲートとか)がないので、代替案を探してました。
他の記事や StackOverFlow では、以下のような対応をしていました。

「いいアイディアだ(内部で何してんの…)」と思いつつ、
更新完了後にテーブルのトップに移動したくて、
setContentOffset(_:animated:) を記載したのですが、中途半端に移動します…

メインスレッドにしても変わりませんでした。w

で、結局どうやったかというと、

UITableView のインスタンスメソッド、scrollToRow(at:at:animated:) で移動しました!
これなら綺麗にアニメーションもしてくれます。

先頭に移動するくらいなら offset で指定していいかーと思ってたのですが、
layoutIfNeeded で再配置後に setContentOffset(_:animated:) しても綺麗に動きませんでした。

更新後に移動させるときはこの方法が綺麗だと思います (`・ω・´)

違うよ!とかこういう方法あるよ!ってのがあれば教えてください。
では( ¯·ω·¯ )

コメント