48
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Swift】UIRefreshControlの使い方

Posted at

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

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だと思いますので、
何かの機会に実装してみてはいかがでしょうか!

ではでは。

48
39
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
48
39

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?