2012-06-29 13 views
6

esta es la situación:UITableViewController dentro de UIScrollView con paginación horizontal

Necesito desplazamiento horizontal y vistas de tabla dentro de cada página. Esto es algo así como la aplicación de noticias, debe mostrar noticias de diferentes categorías, cuando se desplaza en una dirección horizontal, y dentro de una categoría debe mostrar alrededor de 30 noticias, verticalmente desplazables, por supuesto.

he hecho con éxito lo que necesito, pero ...

he siguiente escenario:

UINavigationController 
|__ UIViewController, which contains ScrollView and PageControl 
    |__ UITableViewController, which holds data in rows, and is displayed inside parent, which is actually ScollView 

sé que esto no es una solución ideal, pero al menos funciona. Como base, utilicé el código y el tutorial de Apple para PageScroll que se encuentran en este link. En lugar de viewController para agregar a ScrollView, utilicé TableViewController, así que básicamente agregué tableController.tableView a ScrollView.

Sé, también, que agregar tableViews dentro de scrollview es como agregar un automóvil dentro de un camión y conducir ese automóvil, pero no pude encontrar la forma más razonable de hacer lo mismo.

Por lo tanto, necesito su opinión acerca de cómo esto se puede lograr utilizando otro enfoque. Uso storyboard y iOS 5 para esto, y todo parece (y parece) desordenado en este momento.

Gracias de antemano, mucho.

+0

Estoy teniendo exactamente el mismo problema aquí. Entonces, ¿cómo resolviste este problema finalmente? ¿Todavía agregas UITableViewControllers dentro de UIScrollView? ¡Gracias! – nonamelive

Respuesta

5

hice algo similar hace unos meses, y fue así:

  • UINavigationController
    • UIViewController con un UIScrollView
      • UIViewController con un UITableView interior (utilizo este porque simplemente odio UITablewViewController)

I siguió el Apple's documentation about creating custom containers. Hay un gran video sobre eso en la sección del video WWDC 2011 si no me equivoco. Puedo decir con orgullo que el código es realmente limpio y simple de entender.


respuesta 1,0

La única cosa es, ¿se las arregló para conseguir un manejo orientación adecuada del tableView, sin ningún tipo de corte, o si no lo usa?

No, en este caso no lo hice, pero estoy seguro de que podría haberlo hecho sin ningún problema. Usted ve, la mayoría de los problemas vienen cuando acaba de [self.view addSubView:newViewController.view];. Simplemente agregue el UIView, toda la lógica de la rotación la maneja el nuevo ViewController y no en el controlador donde estará el UIView.

La otra cosa es, si voy a tratar de implementar, digamos, GridView o algo así, para iPad, el manejo de orientación y las animaciones se vuelven muy feos.

He implementado esto en otro proyecto y era muy fácil de poner en práctica una vez que entienda lo que está pasando:

  1. he usado un UIViewController con un UITableView así que podría conseguir todas las ventajas de la dequeueReusableCellWithIdentifier:, la creación de los títulos de la sección, encabezados y pies de página de la tabla, etc. Me imagino que no importa lo que haría con un UIScrollView, un UITableView siempre va a ser más optimizado. Como el UITableViewCell's acabo de usar un soporte con 3 cuadrados, siendo cada uno una imagen. (mi aplicación era una muestra de imágenes)
+0

Bueno, esto se ve igual que el mío, excepto por lo que odias. La única cosa es: ¿lograste obtener el manejo de orientación adecuado de tableView, sin ningún truco, o no lo usas? La otra cosa es, si voy a tratar de implementar, digamos, GridView o algo así, para iPad, el manejo de orientación y las animaciones se vuelven muy feos. @Jacky Boy, gracias por responder, por supuesto. – Dimmy3

+0

Revise mi edición 1.0 – Peres

+0

Q1: Veamos si entendí esto correctamente: Es [self.view addSubView: newViewController.view] (yo uso [scrollView addSubview: newController.tableView]) forma correcta de hacerlo, o debería cargar una nueva página (controlador) de manera diferente? Cuando hago lo que hice, cuando se cambia la orientación, el ancho de la celda sigue siendo el mismo que en la orientación vertical, y parte de la siguiente página se muestra después de eso. – Dimmy3

Cuestiones relacionadas