ニュースリーダーアプリをiOS5対応する(iOS5でUIRefreshControl ひっぱって更新)

2013年7月20日土曜日

iOS5対応 書籍

t f B! P L
絶対に挫折しない iPhoneアプリ開発「超」入門【iOS6対応版】
高橋 京介
ソフトバンククリエイティブ
売り上げランキング: 2,890

 ニュースリーダーアプリをiOS5対応します。deployment target を変更し、user layout などはOFFにするのは毎度。

 ほぼ書籍通りにやって問題ないのですが、大きくて致命的なのが、「ひっぱって更新」のUIRefreshControlです。これはiOS5の途中からかっこいいインターフェースなのであっというまに広まって、iOS6にはAPIに入っていました。iOS5では自力でやらなければなりません。

 わたしが前回いつかどこかで実装したときは、Cocoaの日々 [iOS] UITableView でプルダウンすると再読込するユーザインタフェースを実装 を参考にしました。今回はなるべく簡単にしたい。ニュースリーダーアプリのメインはXMLパーサーの話ぽいし。

 XMLに関連することはスマホやwebのアプリを作る人は避けられない道ですので、最初にどっぷりはまって身につけておきましょう。

 閑話休題。何か簡単な方法はないかなー、と探してみます。最初に見つけたものは簡単そうだったのですが、コンパイルなどが上手く通りませんでした。2つめに見つけたのはCKRefreshControl です。

 iOS6のUIRefreshControlに完全にコンパチブル、コードを全く書き換えなくて良いそうです。iOS5とiOS6を気にしなくて良いのですってーすごいわー。

 ファイルをプロジェクトに追加しましたが、ビルドでエラーになる。そのあとどうしたらいいのかわからない。Build Phases の Compile Source に追加しましたが、それだけではだめらしい。エラーにでていた文字列から検索したら、iPhone how to use CAShapeLayer link error with armv7 というのがあり、QuartzCore.framework を追加する。

 うごいたーヽ(^0^)ノ

 iOS6だとひっぱったとき「うにょん」というのがでてきますが、iOS5 ではリロードなアイコンが出てきます。ここをどうこうカスタムしたい場合は、他を勉強しないとだめですね!

2013/7/24 追記
 IOS5でのCKRefreshControlによる実装、イベントが2回動いていました。なので、真偽の値を1つもって、読み込み中はフラグをたてておきます。

  1. インスタンス変数に、BOOL isLoading など追加
  2. viewDidLoadでNOをいれる
  3. startDownloadの最初で、YESならreturn
  4. YESをいれる
  5. parserDidEndDocumentのなか tableViewのreloadDataのあとで NOにする
細かく書くと変な感じもする...

2013/07/25 追記
 ドヤ顔で追記していた上記がまちがっていた(´・д・`)。。。はづかしい。。完全に間違っているわけではないが、なんだかあっているわけではない。。何回も動いているような気がする。iOS6だったら多分大丈夫なんだろう。。



このブログを検索

QooQ