UITableViewControllerは固定の場合にしかつかわない

UITableViewのdelegateを別のクラスを使う場合が多いからだ。よってViewController自体にdelegateの機能が実装されているUITableViewControllerを使う必要がないのだ。

delegateとdatasourceを分離すべきかどうかという話があるが、私はあまり分離する必要はないと思っている。その二つは大抵の場合、一つのコレクションオブジェクトを参照している。分けたところでそこまでコードがシンプルになることが少ないと思っている。そのため無理して分ける必要はない。

delegateを分けることでViewControllerはかなりシンプルになっている。大抵の場合は100行もない。本来はその程度の行数あれば十分なのだ。まぁ、それ以上の行数があればcontentViewを使って分けていますが。

UITableViewCellの描画に関してはCellの責務としている。そうすることでViewContorllerの責務を減らしている。Cellを描画するために必要な情報を一つのオブジェクトにまとめてCellに渡すことにしている。これはそのオブジェクトの集合をラップしたものが、UITableViewのdelegateありdatasourceになっているからだ。その集合にないものはTableViewCellに成り得ない。例外として最上部や最下部に他のCellとは異なる挙動をさせるために追加する場合がある。その場合はtableHeaderViewなどをつかえばいい。