From the daily archives: 火曜日, 8月 30, 2011

UITableViewを使っていてこれみんな使ってないんじゃね?って思う便利な小ネタがいくつかあったのでいくつか紹介します。

■tableViewの最初または最後だけ別の情報を表示する

これ、割とよくやるんじゃないでしょうか。twitterアプリで一番下に「さらにロード」ボタンを付けたりするやつです。

手段としては

  • numberOfRowsInSectionで一つ多く数を申請しておいて、cellForRowAtIndexPathで一番下なら〜とif分で判定する
  • tableFooterViewプロパティに任意のViewを代入する

があります。

外見はどちらも似たような形にすることは出来ますが、ソースコードの長さ、煩雑さ、cellのカスタマイズのしにくさを考えるとtableFooterViewを使う方が簡単で見やすいものになると思います。



■ナビゲーション時の選択解除

tableViewControllerは階層構造によく使います。
このとき、タップされたアクションで画面遷移して、選択された青いのを消すために選択解除してってやってませんか?

実はtableViewControllerにはclearsSelectionOnViewWillAppearというプロパティがあって、画面遷移した後、戻るボタンで戻ったときに自動で選択を解除する機能がついているんです。
Appleの iOS Human Interface Guidelinesでは

セルの選択に応答して、新規のView ControllerをNavigation Controllerのスタックにプッシュした場合は、そのView Controllerがスタックからポップされたときに、セルを(アニメーションを伴って)選択解除します。

という風に書いてあります。

お勧めされる手法があって、それを簡単に行う方法まであるので、使わない手はないと思います。