2011-11-30 26 views
5

Tengo un caso de diseño extraño en el que para implementar necesito colocar dos UITableViews en la misma vista. Solo usaría secciones, pero necesito un índice en la segunda tabla.Desplazamiento simultáneo de dos UITableViews

Me gustaría que ambos se desplacen juntos, ya que en realidad eran dos secciones de la misma vista de tabla. es posible?

Aquí hay una maqueta básica ilustrar por qué:

mockup

Por lo que yo entiendo, no se puede mover el índice. Además, cuando agrega un índice a una tabla, aparece en toda la tabla, no solo en una sección.

Si tengo que implementar esto como dos vistas de tabla, ambas necesitan desplazarse como si fueran una sola. Si es posible hacer esto usando secciones, eso es aún mejor.

+0

Por favor, aclarar lo que entendemos por "índice en la segunda tabla". No estoy convencido de que un solo 'UITableView' no satisfaga sus necesidades. – SundayMonday

+1

¿Podría hacer su pregunta más específica sobre lo que está tratando de hacer? ¡Estoy seguro de que podemos encontrar una solución más simple que use solo 1 'UITableView'! – Legolas

Respuesta

23

actualización

Después de ver su actualización de mi viejo respuesta no es muy bueno, pero voy a dejar a mi respuesta anterior para cualquier otra persona que lo desee.

Nueva respuesta: depende de cómo quiera sincronizar las tablas.

Si conoces

  1. el que las células están en la top 5
  2. ¿Cuánto mide cada célula es
  3. El desplazamiento de la vista de tabla

Entonces se puede calcular qué célula es visible en la parte superior de la tabla top 5. Puede usar esta información para desplazar la tabla inferior al índice correcto.


respuesta Antiguo

estoy con los otros chicos no estoy seguro por qué desea o si estoy malinterpretando pero es bastante simple.

UITableView es una subclase de UIScrollView lo que puede establecer a sí mismo como el UITableViewDelegate y anular

- (void)scrollViewDidScroll:(UIScrollView *)scrollView; 
{ 
    UITableView *slaveTable = nil; 

    if (self.table1 == scrollView) { 
     slaveTable = self.table2; 
    } else if (self.table2 == scrollView) { 
     slaveTable = self.table1; 
    } 

    [slaveTable setContentOffset:scrollView.contentOffset]; 
} 

Esto me da algo que se parece a esto:

enter image description here

La parte superior UITableView es self.table1 y la parte inferior es self.table2 si cualquiera de las tablas se desplaza, el desplazamiento se refleja en la otra tabla.

+0

Sin duda funcionará, y esa es en realidad la mejor opción. – Macmade

+0

Funciona para mí desplazar el scroll de forma paralela a TableViews para desplazarme al unísono – Krishnan

+0

¡Funciona perfecto! – xarly

1

Desde la maqueta, parece que esto se puede lograr con un solo UITableView con dos secciones.

En lugar de mantener dos tableViews, puede mantener dos colecciones (una para cada sección). Luego, en cellForRowAtIndexPath, elija la colección que se utilizará según la sección especificada en indexPath.

+0

El índice aparecerá en ambas secciones, no solo en la segunda. – James

+0

No creo que entiendo completamente lo que estás tratando de hacer. Por favor aclare con un ejemplo. – SundayMonday

+0

Me gustaría tener un índice en la tabla, pero solo en la segunda sección. Tal como está ahora, si agrego un índice, aparece donde aparece (en toda la tabla). Solo quiero indexar en la segunda sección. – James

0

en Swift este código:

func scrollViewDidScroll(scrollView: UIScrollView) { 
    if tb_time1 == scrollView { 
     tb_time2.contentOffset = tb_time1.contentOffset 
    }else if tb_time2 == scrollView { 
     tb_time1.contentOffset = tb_time2.contentOffset 
    } 
} 
Cuestiones relacionadas