Estoy desarrollando una aplicación que usa SQLite. Quiero mostrar una lista de usuarios (UITableView) usando un mecanismo de paginación. ¿Alguien podría decirme cómo cargar más datos en mi lista cuando el usuario se desplaza hasta el final de la lista (como en la página de inicio de la aplicación de Facebook)?
ios
iphone
uitableview
pagination
rokridi
fuente
fuente
launchReload
responsabilidad del método manejarlo (por ejemplo, solo una acción de recarga asincrónica a la vez)if !lastItemReached && indexPath.row == dataArray!.hits.count - 1 {
self.launchReload
metodoRápido
Método 1: se desplazó hacia abajo
Aquí está la versión Swift de la respuesta de Pedro Romão . Cuando el usuario deja de desplazarse, comprueba si ha llegado al final.
Método 2: última fila alcanzada
Y aquí está la versión Swift de la respuesta de shinyuX . Comprueba si el usuario ha llegado a la última fila.
Ejemplo de un
loadMore()
métodoConfiguré estas tres variables de clase para obtener lotes de datos.
Esta es la función para cargar más elementos de la base de datos en la vista de tabla.
fuente
Es mejor usar el
willDisplayCell
método para verificar si se cargará qué celda. Una vez que tenemos la corrienteindexPath.row
es la última, podemos cargar más celdas. Esto cargará más celdas al desplazarse hacia abajo.fuente
Detalles
Solución
Uso
en eso
manejo
Muestra completa
Resultado
fuente
Si está usando Core Data y
NSFetchedResultsController
, entoncesloadMore
podría tener el siguiente aspecto:fuente
Implementé una solución que encontré en stackoverflow, y funciona bien, pero creo que la solución de shinyuX es muy fácil de implementar y funciona bien para mi propuesta. Si alguien quiere una solución diferente, puede usar esta a continuación.
fuente
Detalles
Solución
agregue esta extensión UITableView + en su nuevo archivo
Ahora, simplemente agregue la siguiente línea de código en UITableViewDelegate Method willDisplay Cell en su ViewController y asegúrese de que tableView.delegate = self
Resultado
Eso es todo .. Espero que esto sea de ayuda. Gracias
fuente
Utilice el límite y la compensación en sus consultas y llene su vista de tabla con ese contenido. Cuando el usuario se desplaza hacia abajo, cargue el siguiente desplazamiento.
Implemente el
tableView:willDisplayCell:forRowAtIndexPath:
método en suUITableViewDelegate
y verifique si es la última filafuente
El siguiente enlace proporcionará un código de muestra. # Swift3
El usuario debe abrir la última celda de vista de tabla, al menos una altura de 2 celdas para obtener más datos del servidor.
Encontrará la celda de proceso también para mostrar el proceso de carga como en la última celda.
Está en Swift3
https://github.com/yogendrabagoriya/YBTableViewPullData
fuente
Una opción más para usar ( Swift 3 e iOS 10+):
Para páginas bastante pequeñas (~ 10 elementos), es posible que desee agregar manualmente datos para las páginas 1 y 2 porque nextPage puede estar en algún lugar aproximadamente 1-2 hasta que la tabla tenga algunos elementos para desplazarse bien. Pero funcionará muy bien para todas las páginas siguientes.
fuente
muy buena explicación en este post.
http://useyourloaf.com/blog/2010/10/02/dynamically-loading-new-rows-into-a-table.html
simple, tiene que agregar la última fila y ocultarla, y cuando la fila de la tabla llegue a la última fila, muestre la fila y cargue más elementos.
fuente
debe verificar ios UITableViewDataSourcePrefetching.
fuente
para cargar desde una API, funciona para mí, Xcode 10 , swift 4.2 :
1- crea un nuevo archivo Swift y haz esto:
2- en su archivo ViewController (tableView Controller):
si usa tableView en su viewController set delegate , datasource self en viewDidLoad.
fuente
Solo quiero compartir este enfoque:
NSLog(...);
la salida sería algo como:Esto es bueno para mostrar datos almacenados localmente. Inicialmente declaro el límite de datos a 25, eso significa que uitableview tendrá 0-24 (inicialmente).
Si el usuario se desplazó hasta la parte inferior y la última celda es visible
dataLimit
, se agregarán 25 ...Nota: Esto es más como una paginación de datos UITableView, :)
fuente
fuente
La mejor manera de resolver este problema es agregar una celda en la parte inferior de su tabla, y esta celda contendrá el indicador.
Rápidamente necesitas agregar esto:
mira el código a continuación:
Para la vista de tabla: numOfRows:
cellForRawAt indexPath:
Si nota que mi celda de carga se crea a partir de un archivo nib. Estos videos explicarán lo que hice.
fuente
fuente
Para Xcode 10.1, Swift 4.2
¡Este video parece un gran tutorial!
Proyecto inicial / completo: https://github.com/RobCanton/Swift-Infinite-Scrolling-Example
fuente