2011-12-28 8 views

Respuesta

19

Un TableViewController es un ViewController con un TableView incorporado. Esto tendrá los métodos de delegado necesarios ya declarados y configurados. Este VC ya es un delegado de TableView y una fuente de datos. No puede ser redimensionado. Al revés es fácil de usar, la desventaja es una flexibilidad muy limitada.

Una TableView es solo eso una TableView (subclase de UIView). Se puede agregar a ViewController y redimensionarse, usarse junto con otro objeto basado en vista, etc. El aspecto positivo es la flexibilidad, la desventaja es que usted mismo tiene que configurar los métodos de delegado y de origen de datos (en mi opinión, vale la pena el tiempo para obtener la flexibilidad).

Otra nota es que al usar las nuevas celdas de TableView estático (parte de iOS5), debe usar TableViewController.

+0

Un buen punto al mencionar la falta de cambio de tamaño/compartir el 'UITableView' con otros controles en la misma pantalla cuando se utiliza un' UITableViewController'. Bueno, por otro lado, uno siempre puede usar la parte 'tableHeaderView' y' tableFooterView' para otros controles. – Till

+0

Es cierto, pero cuando se hace algo como tener una SearchBar estática (que no se desplaza), un VC con un TableView funciona bien. –

4

El UITableViewController es una subclase del UIViewController. Ya supone que tendrá UITableView como su vista raíz, por lo que ya tiene acceso desde el código a tableView (self.tableView). Implementa el protocolo UITableViewDataSource y UITableViewDelegate. También le brinda muchos métodos para que anule. Le permite no depender del archivo XIB, porque ya sabe lo que tendrá (UITableView como rootView).

El UITableView es sólo UIView, normalmente tendrá que ajustarse a los protocolos que he hecho referencia anteriormente en su UIViewController con el fin de poblar (fuente de datos) y trabajar con él (delegado), y es probable que tenga que crear una IBOutlet para su UITableView.

Por un lado, tiene velocidad pero no es tan flexible como el otro camino. Por el otro, tienes todo lo contrario.

+0

Su respuesta es generalmente correcta pero un poco IB céntrica para mi gusto. Solo para aclarar, IBOutlets ciertamente solo son necesarios en caso de que pretenda usar InterfaceBuilder para diseñar sus vistas. Esa tarea también puede realizarse (a veces mejor) utilizando código simple. – Till

+0

Prefiero usar 'InterfaceBuilder' cada vez que puedo, es más rápido y mantiene el código limpio. Por supuesto, puede declarar un 'UITableView' en su código y simplemente agregarlo a su' UIView', aunque no me gusta. – Peres

Cuestiones relacionadas