Help us understand the problem. What is going on with this article?

【Swift】UIRefreshControlの使い方

More than 1 year has passed since last update.

今回は、よく使いそうな機能の実装方法を載せていこうと思います。

UIRefreshControlとは

よくある、"引っ張って更新"を実装できる要素です。

スクロールが可能な要素(スクロールビュー)に設定することができます。

実装方法

今回はTableViewにRefreshControlを実装してみたいと思います。

TableViewController.swift
class TableViewController: UIViewController {

    @IBOutlet weak var tableView: UITableView!

    fileprivate let refreshCtl = UIRefreshControl()

    override func viewDidLoad() {
        tableView.refreshControl = refreshCtl
        refreshCtl.addTarget(self, action: #selector(ViewController.refresh(sender:)), for: .valueChanged)
    }

    func refresh(sender: UIRefreshControl) {
        // ここが引っ張られるたびに呼び出される
        // 通信終了後、endRefreshingを実行することでロードインジケーター(くるくる)が終了
        UIRefreshControl.endRefreshing()
    }
}

では解説です。

まずStoryBoardでUITableViewを配置し、TableViewControllerを作成します。

次に、TableViewをアウトレット接続し、UIRefreshControlのインスタンスも作成します。

その作成したインスタンスをViewDidLoad()でTableViewのrefreshControlプロパティに設定します。

次は引っ張られた時にどの処理を実行させるかを、
UIRefreshControlのインスタンスにaddTargetで指定しています。

これで引っ張って更新の機能は実装完了です。

注意点としては、コメントにも書いていますがendRefreshing()を忘れずに。ぐらいかと思います。

さいごに

案外簡単に実装が可能で、よく使うUIだと思いますので、
何かの機会に実装してみてはいかがでしょうか!

ではでは。

ryo-ta
IT業界はもうすぐ6年目のエンジニア?です。 最近はマネジメントに興味があります。
i-enter
「効果」をつねに提供します。スマホアプリ開発No.1の実績。最新のIoTに対応した開発も行います。
https://www.i-enter.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away