contenthello-world.jp.netwebエンジニアのメモ。投稿Tweet前回は、詳細ページ(WebView)のカスタマイズを行いました。今回は再びTableViewを使った一覧ページに戻り、TwitterアプリやFacebookアプリでもよく見かける引っ張ってTableViewをリロードする機能(UIRefreshControl)を追加したいと思います。既存のsetupLinksの改良その前に、まずは既存のsetupLinksメソッドに少し手を加えます。現状だとアプリを起動したタイミングで毎回APIにアクセスしてデータを取得するようになっていますが、ランキングの更新は週に1回しかないのでAPIの結果はキャッシュしてよさそうです。サーバ負荷も減るので、基本的には24時間キャッシュするようにして、必要あれば強制的に更新できるようにしておきます。以下にsetupLinksのbeforeとafterを載せておきます。NSUserDefaultsを用いて、jsonの結果と、有効期限のunixtimeを保存することにしました。あとはキャッシュの有無によって、サーバからデータを取得するかキャッシュからデータを取得するかを出し分けています。引数にforceReloadを追加し、trueの場合は強制更新をかけられるようにしました。}これでsetupLinksを改良できました。続いてはいよいよ引っ張ってリロードの実装です。インスタンス変数にrefreshを追加し、viewDidLoad内で設定しています。引っ張ってリロードが実行されたタイミングでpullToRefreshメソッドが実行されるようにしています。pullToRefreshメソッドでは、setupLinksをAPI経由の強制読み込みで実行し、refreshのアニメーションを終了させています。}これでシミュレータを起動して、TableViewを下に引っ張ってみるとローディングが表示されるようになります。UIRefreshControl自体の設定は、少しコードを書くだけで実現できるのでお手軽ですね。最後まで引っ張るとpullToRefreshが呼び出され、ローディングが終了します。これでTableViewの引っ張ってリロード機能が実装できました。次回は、ローカルPush機能の実装を行います。Amazonアソシエイト・プログラムの参加者です。