モケラ

Tech Sheets

mokelab

UITableViewでUIRefreshControlを使い、PullToRefreshを実現する

最終更新日:2016-02-21

UITableViewでPullToRefreshする例です。UIRefreshControlオブジェクトを生成し、addSubViewするだけなので、ソース全体を示したほうが早いですね。

class RefreshTableViewController : UIViewController, UITableViewDataSource {
    @IBOutlet var tableView : UITableView?

    override func viewDidLoad() {
        super.viewDidLoad()

        let refreshControl = UIRefreshControl()
        refreshControl.addTarget(self, action: "startLoading:", forControlEvents: UIControlEvents.ValueChanged)
        tableView?.addSubview(refreshControl)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    //MARK: TableView Data source
    // TableViewに関する項目なので省略

    //MARK: RefreshControl
    func startLoading(refreshControl : UIRefreshControl) {
       // 別スレッドで2秒処理したことにしてみる
        NSThread.detachNewThreadSelector("wait:", toTarget: self, withObject: refreshControl)
    }

    func wait(refreshControl : UIRefreshControl) {
        // 2 sec
        sleep(2)
        dispatch_async(dispatch_get_main_queue()) {
            refreshControl.endRefreshing()
        }
    }
}

一覧に戻る