【Swift】UIRefleshController(インジケーター)の実装方法

完成図

今回は、インジケーターを実行すると、

"更新したよ"

というテキストが代入されたセルが追加される。

 

f:id:nekokichi_yos2:20181108233817p:plain

f:id:nekokichi_yos2:20181108233820p:plain

f:id:nekokichi_yos2:20181108233824p:plain

 

手順

 

  1. UIRefreshControlのインスタンスを生成
  2. 色、テキスト、などのプロパティを設定
  3. 実行したい処理や関数を追加
  4. tableViewにUIRefleshControlを設定する
  5. クルクル(インジケーター)を終了させる

 

ソースコード

 

import UIKit

class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {
    

    @IBOutlet weak var tableView: UITableView!
    
    //セルに表示するテキスト
    var array = [String]()
    
    //UIRefleshControlの宣言
    let reflesh = UIRefreshControl()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //クルクル(インジケーター)の色
        reflesh.tintColor = UIColor.blue
        //クルクルの下に表示されるテキスト
        reflesh.attributedTitle = NSAttributedString(string: "更新しまぁーす")
        //実行したい処理を追加
        reflesh.addTarget(self, action: #selector(addText), for: .valueChanged)
        //tableViewにreflehsを追加
        tableView.refreshControl = reflesh
        
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return array.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
        cell.textLabel?.text = array[indexPath.row]
        return cell
    }

    @objc func addText() {
        array.append("更新したよ")
        //クルクルを終了させる
        self.reflesh.endRefreshing()
        //セルをリロード
        tableView.reloadData()
    }
    
}