iOS

...now browsing by category

 

Storyboardにてテーブルのセルをプロジェクト間でコピーする

木曜日, 6月 26th, 2014

ふと、Storyboardで作成したカスタムセルを、他のプロジェクトにコピー出来ないかなと思ったのでやってみました。

まず、コピー元のプロジェクトでStoryboardを開きます。

スクリーンショット 2014-06-26 8.48.48

コピーしたいセルを選択し、メニューの Edit -> Copy を実行します。
次に、コピー先のプロジェクトを開いて、Table View を選択します。

スクリーンショット 2014-06-26 8.49.28

そしてメニューの Edit -> Paste を実行します。

スクリーンショット 2014-06-26 8.49.40

セルがコピーされました。

スクリーンショット 2014-06-26 8.50.31

セルの高さを増やしてみると、下の方のUIImageViewもコピーされています。
さすがに貼付けてあった画像の元ファイルまではコピーされません。

スクリーンショット 2014-06-26 8.51.29

Autolayoutの制約もちゃんとコピーされてます。

UITableView に Web API から順次データを読み込んで表示する方法の考察

日曜日, 6月 15th, 2014

Web APIで取得したデータをUITableViewに表示する必要があり、色々調べたり考えた結果をまとめました。

対象としているWeb API

  • パラメータに当てはまるデータをリストで返してくるが、一度にすべてのデータを返してくるのではなく、50件とか決められた上限までのデータしか返さない。
  • 続きのデータが欲しい場合は、続きの先頭番号を指定して読み出す。それもまた決められた上限までしか返さない。

最初APIアクセスが終了するまでのテーブル表示はどうするか?

  • 初回は空のセルを表示する。
  • 一回でも読み込み済みならデータソースをメモリ上に残しておき、それを表示する。
  • もし、頻繁にデータソースが消え、空セル表示が目につくようなら、tmp領域に書き込んでおいて、それを読み出すように変更する。

次のAPIアクセスはどのタイミングで行うか?

  • 定番はない模様。
  • 例えば10セル前のcellForRowAtIndexPathが呼ばれたら、次のデータ読み込みを開始する。
  • willDisplayCell:とcellForAtIndexPath:はペアで呼び出されているようなので、どちらでも可能だが、cellForAtIndexPathはほぼ必ず実装されているのでそちらで行う。

データは何処に溜めておくのか?メモリor永続化?

  • とりあえずメモリ。
  • 問題がでるようならtmp領域に永続化。

データを解放するタイミングは?

  • データ量的に少なければ必要なし。
  • 次のデータ読み込み時に、貯めてあるデータ量がある一定を超えたら、読み込んだのと逆側をデータを同じ分だけ解放する。