10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Swift】UITableViewとUITableViewControllerは何が違うのか

Last updated at Posted at 2020-06-14

掲題についてふと疑問に思いTwitterで呟いたら素敵な回答を頂けたので、こちらにまとめした。

UITableViewとUITableViewControllerについて

構造の違い

もちろんViewViewControllerがそれぞれの親になっています。

UITableView UITableViewController

UITableViewControllerの特徴

1. StaticCellを使用できる

StaticCellとは静的に固定したセル、つまり再利用しないセルです。
よく例であげられるのは設定画面で、TableViewのようなセクションがある一覧を作りたいが、再利用する必要のない時などに使います。

普通のViewでTableViewのようなレイアウトを作るのは結構面倒ですが、StaticCellで作ると本当にレイアウトの実装コストが低くて済みます。

2. clearsSelectionOnViewWillAppearでTableViewの選択状態を自動でクリアしてくれる

遷移先画面から戻ってきた時に選択状態をクリアしたい場合などにとても便利です。
UITableViewControllerにはclearsSelectionOnViewWillAppearがデフォルトでtrueになっており、そのための処理を書かなくても画面が表示される時に選択状態を解除してくれます。

TableViewで同じような処理をしたい場合は、viewWillAppearなどでそれ用の処理を書くことになります。描画のためのデータをModelなどにしておいて、Model保持した選択状態を元にviewWillAppeardeselectRowAtIndexPathを用いてクリアするのかなと思います。
StaticCellで描画していた場合はCell数も少ないので全部クリアしてしまえば良いですね。

3. CellにUITaxtFieldなどを置いた時、キーボード表示時に自動で入力欄がキーボードの上にくるようにスクロールしてくれる

キーボードと入力欄の位置問題は、誰しも一度は出会う問題ではないでしょうか?
基本的にキーボードの高さをとってそこまでOffsetを変更してスクロールさせたりしていると思います。
それがUITableViewControllerだと自動でやってくれるのです。小さいですが、これは地味に便利ですね。

大体こんなところではないでしょうか。
今まであまりUITableViewControllerを使う機会がなかったのですが、上記がいかせる画面があれば是非使ってみたいな〜と思いました!

コメント頂いた方々、ありがとうございました✨

10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?