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()
        }
    }
}
