えむじぃのアプリ開発

えむじぃのアプリ開発

元大手IT企業SE、現ベンチャー企業CTOのブログです。

【Swift】TableViewを下に引っ張ると更新処理を行う方法

今回はTableViewを下に引っ張ると更新処理を行う方法をこの記事で説明します。

この記事のポイント・UITableViewDataSourceを使用
・UITableViewDelegateを使用
・UIRefreshControlを使用

TableViewを下に引っ張ると更新処理を行う方法

TableViewを下に引っ張ると更新処理を行う方法を実装するには以下のように設定します。

ViewController

import UIKit
 
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    @IBOutlet weak var tableView: UITableView!
    var refreshControl:UIRefreshControl!
    let smp = DispatchSemaphore(value: 1)

viewDidLoad

override func viewDidLoad() {
    super.viewDidLoad()
         
    tableView.delegate = self
    tableView.dataSource = self
         
    refreshControl = UIRefreshControl()
    refreshControl.attributedTitle = NSAttributedString(string: "Reloading.")
    refreshControl.addTarget(self, action: #selector(ViewController.refresh), for: UIControlEvents.valueChanged)
    tableView.addSubview(refreshControl)
}

updateTable()

func updateTable () {
    DispatchQueue.global().async {
        // ここにTableViewの更新処理を記述
    }
}

refresh()

@objc func refresh() {
    updateTable()
    smp.wait()
    smp.signal()
    refreshControl.endRefreshing()
}

これでTableViewを下に引っ張ると更新処理を行うことができます。