UITableView es lo mismo que UIScrollView en el método scrollViewDidScroll.
Por lo tanto, es fácil emular el desplazamiento infinito.
el doble de la matriz de modo que la cabeza y la cola se unen entre sí para emular mesa circular
usar mi siguiente código para hacer cambio de usuario entre la primera parte de la tabla duplicado y segunda parte de la tabla duplicado cuando tienden para llegar al comienzo o al final de la mesa.
:
/* To emulate infinite scrolling...
The table data was doubled to join the head and tail: (suppose table had 1,2,3,4)
1 2 3 4|1 2 3 4 (actual data doubled)
---------------
1 2 3 4 5 6 7 8 (visualising joined table in eight parts)
When the user scrolls backwards to 1/8th of the joined table, user is actually at the 1/4th of actual data, so we scroll instantly (we take user) to the 5/8th of the joined table where the cells are exactly the same.
Similarly, when user scrolls to 6/8th of the table, we will scroll back to 2/8th where the cells are same. (I'm using 6/8th when 7/8th sound more logical because 6/8th is good for small tables.)
Thus, when user reaches 1/4th of the first half of table, we scroll to 1/4th of the second half, when he reaches 2/4th of the second half of table, we scroll to the 2/4 of first half. This is done simply by subtracting OR adding half the length of the new/joined table.
*/
-(void)scrollViewDidScroll:(UIScrollView *)scrollView_
{
CGFloat currentOffsetX = scrollView_.contentOffset.x;
CGFloat currentOffSetY = scrollView_.contentOffset.y;
CGFloat contentHeight = scrollView_.contentSize.height;
if (currentOffSetY < (contentHeight/8.0)) {
scrollView_.contentOffset = CGPointMake(currentOffsetX,(currentOffSetY + (contentHeight/2)));
}
if (currentOffSetY > ((contentHeight * 6)/ 8.0)) {
scrollView_.contentOffset = CGPointMake(currentOffsetX,(currentOffSetY - (contentHeight/2)));
}
}
P. S. - He usado este código en una de mis aplicaciones llamada NT Time Table (Lite). Si desea obtener la vista previa, puede consultar la aplicación: https://itunes.apple.com/au/app/nt-time-table-lite/id528213278?mt=8
Si su tabla a veces puede ser demasiado corta, al comienzo del método anterior puede agregar una lógica if para salir del método cuando el conteo de datos es para ejemplo menos de 9.
Creo que esto es todo. Nada elegante para hacer aquí; al menos las filas son todas virtuales para que pueda hacerlas sobre la marcha. – drw
@drw: Siga este enlace: [link] (http://stackoverflow.com/questions/5675535/how-to-implement-cyclic-scrolling-on-tableview) –
Consulte mi respuesta a continuación. Tiene el código. He estado usando ese código por mucho tiempo. Funciona. –