2011-12-28 11 views

答えて

19

TableViewControllerは、TableViewが組み込まれたViewControllerです。これにより、必要なデリゲートメソッドが既に宣言され、セットアップされます。このVCはすでにTableViewのデリゲートとデータソースです。サイズを変更することはできません。アップサイドは使用の容易さであり、欠点は非常に限られた柔軟性である。

TableViewはTableView(UIViewのサブクラス)です。それはViewControllerに追加され、サイズ変更され、別のビューベースのオブジェクトなどと一緒に使用されます。柔軟性は欠点です。柔軟性)。

もう1つの注意点は、新しい静的TableViewセル(iOS5の一部)を使用する場合は、TableViewControllerを使用する必要があります。

+0

'UITableViewController'を使用しているときに同じスクリーン上の他のコントロールとの' UITableView'のサイズ変更/共有の欠如について言及しておきましょう。一方、他のコントロールでは常に 'tableHeaderView'と' tableFooterView'を使うことができます。 – Till

+0

真ですが、静的SearchBar(スクロールしない)のようなものを実行すると、TableViewを持つVCがうまく動作します。 –

4

UITableViewControllerUIViewControllerのサブクラスです。すでにあなたがrootViewとしてUITableViewを持っていると仮定しているので、コードからtableView(self.tableView)へのアクセス権はすでに持っています。 UITableViewDataSourceおよびUITableViewDelegateプロトコルを実装しています。また、オーバーライドする方法もたくさんあります。これは、XIBファイルに依存しないことを可能にします。これは、あなたが何を持っているかをすでに知っているからです(UITableViewをrootViewとして)。

UITableViewは通常、あなたが移入(データソース)と、それ(代理人)と連携するために、私はあなたのUIViewControllerて上で参照したプロトコルに準拠する必要がありますが、ちょうどUIViewで、あなたはおそらくIBOutletを作成する必要がありますあなたのUITableView

一方ではスピードはありますが、もう一方のパスほど柔軟ではありません。もう片方には反対があります。

+0

あなたの答えは、一般的に正しいですが、私の味のために少しIB中心です。明確にするために、IBOutletsは、ビューをレイアウトするためにInterfaceBuilderを使用する場合にのみ必要です。その作業は、明らかに単純なコードを使用して達成することもできます(より良い場合もあります)。 – Till

+0

私はできる限り速く 'InterfaceBuilder'を使うのが好きですし、コードをきれいに保ちます。もちろん、あなたのコードに 'UITableView'を宣言して、それをあなたの' UIView'に追加することはできますが、私はそれが好きではありません。 – Peres

関連する問題