高橋 京介
ソフトバンククリエイティブ
売り上げランキング: 2,890
ソフトバンククリエイティブ
売り上げランキング: 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つもって、読み込み中はフラグをたてておきます。
- インスタンス変数に、BOOL isLoading など追加
- viewDidLoadでNOをいれる
- startDownloadの最初で、YESならreturn
- YESをいれる
- parserDidEndDocumentのなか tableViewのreloadDataのあとで NOにする
2013/07/25 追記
ドヤ顔で追記していた上記がまちがっていた(´・д・`)。。。はづかしい。。完全に間違っているわけではないが、なんだかあっているわけではない。。何回も動いているような気がする。iOS6だったら多分大丈夫なんだろう。。
0 件のコメント:
コメントを投稿