iphone ios uitableview uiviewcontroller infinite-scroll

iphone - Cómo implementar UITableView infinite scrolling



ios uiviewcontroller (3)

UITableView es una subclase UIScrollView. Implemento - (void)scrollViewDidScroll:(UIScrollView *)scrollView (parte del protocolo UIScrollViewDelegate ) y utiliza la propiedad contentOffset. Por ejemplo, si contentOffset.y está cerca de cero, sabrá que está cerca de la parte superior de la tabla y podrá insertar celdas sobre su posición actual.

Esta pregunta ya tiene una respuesta aquí:

Necesito hacer una UITableView dinámica que admita Infinite Scrolling en ambas direcciones. Necesito llegar a donde no se repite, sino que simplemente continúa en la dirección, ya que tratará las fechas.

TableView estará en un UIViewController entre otras dos UITableViews; uno de ellos estático, y el otro dinámico (en la forma predeterminada). esto también plantea la pregunta de qué hacer con algunos de mis métodos de Datasource. A saber, tableView:NumberOfRowsInSection ya que el número de puntos de datos que tengo se generará algorítmicamente y, por lo tanto, posiblemente sea infinito (como en: no hay una cantidad definida de los datos hasta que no se revele todo)


Debería devolver INT_MAX en tableView:NumberOfRowsInSection y luego engañar un poco en la tableView:cellForRowAtIndexPath:

Digamos que quieres los días de la semana infinitamente. Por lo tanto, tendría una matriz de @ [@ "Lunes", @ "Martes", @ "Miércoles", @ "Jueves", @ "Viernes", @ "Sábado", @ "Domingo"]. Entonces el valor de su fila actual es indexPath.row % array.count esta forma puede asignar una pequeña cantidad de datos a un número casi infinito de filas.

Para hacer que la ilusión infinita funcione, debes seleccionar una fila cerca de INT_MAX / 2 .

Actualizar:

La vista de tabla podría desencadenar una excepción al devolver un número demasiado grande de filas. En ese caso, especifique el número de filas usted mismo. 100.000 filas funcionan bien.


De una publicación anterior: UITableView infinite scrolling

en esencia, no desea generar los datos adicionales hasta que el usuario los busque; puede conectarlos al método cellForRowAtIndexPath: para saber cuándo se acercan al final de su lista y luego extenderlo en ese punto.

Si lo está usando para fechas, ¿por qué no usa una vista de selector?