掲題についてふと疑問に思いTwitterで呟いたら素敵な回答を頂けたので、こちらにまとめした。
UITableViewとUITableViewControllerについて
構造の違い
もちろんView
とViewController
がそれぞれの親になっています。
UITableView | UITableViewController |
---|---|
![]() |
![]() |
UITableViewControllerの特徴
1. StaticCellを使用できる
StaticCell
とは静的に固定したセル、つまり再利用しないセルです。
よく例であげられるのは設定画面で、TableViewのようなセクションがある一覧を作りたいが、再利用する必要のない時
などに使います。
普通のViewでTableViewのようなレイアウトを作るのは結構面倒ですが、StaticCell
で作ると本当にレイアウトの実装コストが低くて済みます。
2. clearsSelectionOnViewWillAppearでTableViewの選択状態を自動でクリアしてくれる
遷移先画面から戻ってきた時に選択状態をクリアしたい場合などにとても便利です。
UITableViewController
にはclearsSelectionOnViewWillAppear
がデフォルトでtrue
になっており、そのための処理を書かなくても画面が表示される時に選択状態を解除してくれます。
TableView
で同じような処理をしたい場合は、viewWillAppear
などでそれ用の処理を書くことになります。描画のためのデータをModel
などにしておいて、Model
保持した選択状態を元にviewWillAppear
でdeselectRowAtIndexPath
を用いてクリアするのかなと思います。
StaticCell
で描画していた場合はCell
数も少ないので全部クリアしてしまえば良いですね。
3. CellにUITaxtFieldなどを置いた時、キーボード表示時に自動で入力欄がキーボードの上にくるようにスクロールしてくれる
キーボードと入力欄の位置問題は、誰しも一度は出会う問題ではないでしょうか?
基本的にキーボードの高さをとってそこまでOffset
を変更してスクロールさせたりしていると思います。
それがUITableViewController
だと自動でやってくれるのです。小さいですが、これは地味に便利ですね。
大体こんなところではないでしょうか。
今まであまりUITableViewController
を使う機会がなかったのですが、上記がいかせる画面があれば是非使ってみたいな〜と思いました!
コメント頂いた方々、ありがとうございました✨