読者です 読者をやめる 読者になる 読者になる

恥知らずのウェブエンジニア -web engineer, shameless

これは一歩を踏み出すことができない者たちのブログ

ios UIRefreshControlでテーブルを引っ張ってからの更新

ios objective-c xcode

iosアプリを開発していて、
テーブルを表示している箇所があり下に引っ張って更新を実装したくなった。

調べてみると、
いくつかライブラリを見つけたのと、ios6から標準でUIRefreshControlなるものが使えるとのこと。
UIRefreshControlはios5には対応していないので、ライブラリを使わないといけないっぽいです。

もはやios5は無視しても問題なさそうなのでUIRefreshControlを使って実装しました。
こちらを参考にしました。
UIRefreshControl Class Reference
iOS6で追加されたUIRefreshControlの使い方 | a.out


使い方はとても簡単。
さっそく先にソース。

- (void)viewDidLoad
{
    [super viewDidLoad];
    UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
    [refreshControl addTarget:self action:@selector(onRefresh:) forControlEvents:UIControlEventValueChanged];
    [self.tableView addSubview:refreshControl];
}

今回はUIViewControllerの上にあるTableViewが対象なので、addSubviewする。
これで更新が起きた時に発生するUIControlEventValueChangedの時にonRefresh:が呼ばれます。

- (void)onRefresh:(UIRefreshControl *) refreshControl
{
    [refreshControl beginRefreshing];
    
    //更新処理!
    
    [refreshControl endRefreshing];

}

beginRefreshingとendRefreshingで更新処理を挟めば、
くるくる表示の間、処理を行い、終わったら表示が消えるようになります。

次はテーブル最下部にいったら、
データ読み込んでセル追加もやってみようと思います。



感謝致します。
f:id:ogataka50:20140515110523j:plain