tomoyaonishiのブログ

iOSのことを中心に・・・その他もあるよ!

UITableViewについて改めて考える

UITableViewについて改めて考えました。

iOSアプリとは切っても切れないUITableViewですが、リスト=UITableViewという考え方はどうかなとおもったのでメモがてら書きます。

結論から言うと再利用しないのであれば(もしくは再利用がごく少量)UIScrollViewのほうがいいじゃんということなのですが。

UITableViewはiPhoneOS2.0から利用可能です。当時はメモリが少なく目に見えない部分の無駄なViewを保持しておくということがあり得ない状況でした。そこでUITableViewのCellを再利用しメモリ使用量を減らすというアプローチが取られたわけです。

現在の主要なiPhoneは十分にメモリがあるので、そこまでセンシティブにならなくてもいいかなとおもっています。

リストだけれども、再利用しないViewで構成されている場合はScrollViewにaddしてそのViewの参照をプロパティにでも持っておくほうがスクロールのたびにViewを作り直すコスト(パフォーマンスとコード)がなくていいなと個人的に思います。

TwitterのようなツイートViewが大量にリスト形式で表示されるようなThe UITableViewだねってところはよいのですが、ユーザ情報入力画面のような各行(氏名、性別、プロフィール画像、コメントなど)が1度きりの登場でかつ10行程度のものであればUIScollViewにaddしてプロパティにViewの参照をもっておくほうがそれぞれのViewに入力された情報も簡単に取得できるので便利です。TableViewだとcellForRowで再描画するために、Viewの値をインデックス付きで保持するために、各Viewの値をdelegateなりで受け取って云々と面倒です。

めんどくさくなってきたのでソースコードへどうぞ。

github.com

ソースコードのVisualFormatの中身の順序を変えると表示順が変更されます。縦方向だけVisualFormat使うといいよ。