【Swift】UITableViewのスクロール位置をトップに戻す方法

UITableViewのスクロール位置をトップに戻す方法

実行環境

Swift5.6
Xcode13.3

完成物

下のように、
ボタンを押すとスクロール位置がトップに戻るUIをご紹介します。

実装

下記のコードのように「setContentOffset」を書くだけで簡単に戻せるらしい。

tableView.setContentOffset(.zero, animated: false)

ちなみに、「animated」を「true」に変えると、動画のようにおしゃれに自動スクロールされます。
いやぁ〜、これを1つのコードで提供しているAppleすごい笑

公式リファレンスはこちらから
下記のように書かれていて、CGPointを引数にトップ以外の場所にも自動スクロールできるらしい。

open func setContentOffset(_ contentOffset: CGPoint, animated: Bool)
// animate at constant velocity to new offset

全コード

クローンをしてローカル環境で見たい方や、もっと詳細に見たい方は
こちらのGitHubにも載せているので、是非!

import UIKit

class ViewController: UIViewController, UITableViewDelegate,UITableViewDataSource {

    private let totalCell = 100
    @IBOutlet private weak var tableView: UITableView!

    @IBAction private func didTapReturnButton(_ sender: Any) {
        tableView.setContentOffset(.zero, animated: true)
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        totalCell
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
        cell.textLabel?.text = "\(indexPath.row + 1):番目のCell"
        return cell
    }

}


ということで、本記事はUITableViewのスクロール位置をトップに戻す方法を自分のメモ程度にまとめました。
本記事を書いている僕自身は、まだSwift初学者のためコードに至らない点が多いと思います。参考程度にご活用下さい。
アドバイスやコードの改善などあれば本記事の最後の部分からコメントしてくださいね。
最後まで読んでいただきありがとうございました!

おすすめSwift書籍

Swiftを学ぶなら、間違いのない2冊はこちら

Xcodeを学ぶなら下の一冊



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です