Estou desenvolvendo um aplicativo que usa SQLite. Quero mostrar uma lista de usuários (UITableView) usando um mecanismo de paginação. Alguém poderia me dizer como carregar mais dados na minha lista quando o usuário rolar para o final da lista (como na página inicial do aplicativo do Facebook)?
ios
iphone
uitableview
pagination
Rokridi
fonte
fonte
launchReload
responsabilidade do método tratá-lo (por exemplo, apenas uma ação de recarga assíncrona por vez)if !lastItemReached && indexPath.row == dataArray!.hits.count - 1 {
self.launchReload
método?Rápido
Método 1: rolou para baixo
Aqui está a versão Swift da resposta de Pedro Romão . Quando o usuário para de rolar, ele verifica se atingiu a parte inferior.
Método 2: alcançou a última linha
E aqui está a versão Swift da resposta brilhanteuX . Ele verifica se o usuário atingiu a última linha.
Exemplo de um
loadMore()
métodoEu configurei essas três variáveis de classe para buscar lotes de dados.
Esta é a função para carregar mais itens do banco de dados na visualização da tabela.
fonte
Melhor usar o
willDisplayCell
método para verificar se qual célula será carregada. Assim que obtivermos aindexPath.row
última corrente , podemos carregar mais células. Isso carregará mais células ao rolar para baixo.fonte
Detalhes
Solução
Uso
iniciar
manipulação
Amostra Completa
Resultado
fonte
Se você estiver usando Core Data e
NSFetchedResultsController
, então,loadMore
poderia ter a seguinte aparência:fonte
Implementei uma solução que encontrei no stackoverflow e funciona bem, mas acho que a solução shineuX é muito fácil de implementar e funciona bem para o meu propósito. Se alguém quiser uma solução diferente pode usar esta abaixo.
fonte
Detalhes
Solução
adicione esta extensão UITableView + em seu novo arquivo
Agora, basta adicionar a seguinte linha de código no método UITableViewDelegate willDisplay Cell em seu ViewController e certifique-se de tableView.delegate = self
Resultado
É isso .. Espero que isso seja útil. Obrigado
fonte
Use limite e deslocamento em suas consultas e preencha seu tableview com esse conteúdo. Quando o usuário rolar para baixo, carregue o próximo deslocamento.
Implemente o
tableView:willDisplayCell:forRowAtIndexPath:
método em seuUITableViewDelegate
e verifique se é a última linhafonte
O link abaixo fornecerá um código de exemplo. # Swift3
O usuário precisa puxar a última célula de exibição de tabela, pelo menos, no máximo 2 células para buscar mais dados do servidor.
Você encontrará a célula de processo também para mostrar o processo de carregamento como na última célula.
Está em Swift3
https://github.com/yogendrabagoriya/YBTableViewPullData
fonte
Mais uma opção de uso ( Swift 3 e iOS 10+):
Para páginas bem pequenas (~ 10 itens), você pode querer adicionar dados manualmente para as páginas 1 e 2 porque a próxima página pode estar em torno de 1-2 até que a tabela tenha alguns itens para serem bem rolados. Mas funcionará muito bem para todas as próximas páginas.
fonte
explicação muito boa neste post.
http://useyourloaf.com/blog/2010/10/02/dynamically-loading-new-rows-into-a-table.html
simples você tem que adicionar a última linha e ocultá-la e quando a linha da tabela atingir a última linha, mostre a linha e carregue mais itens.
fonte
você deve verificar ios UITableViewDataSourcePrefetching.
fonte
para carregar de uma API, funciona para mim, Xcode 10 , swift 4.2 :
1- crie um novo arquivo Swift e faça assim:
2- em seu arquivo ViewController (tableView Controller):
se estiver usando tableView em seu viewController set delegate , datasource self em viewDidLoad.
fonte
Só quero compartilhar esta abordagem:
NSLog(...);
a saída seria algo como:Isso é bom para exibir dados armazenados localmente. Inicialmente, declaro dataLimit como 25, o que significa que uitableview terá 0-24 (inicialmente).
Se o usuário rolar até o final e a última célula estiver visível
dataLimit
, será adicionado 25 ...Observação: isso é mais como uma paginação de dados UITableView :)
fonte
fonte
A melhor maneira de resolver este problema é adicionar uma célula na parte inferior da sua tabela, e esta célula conterá o indicador.
Rapidamente, você precisa adicionar isto:
veja o código abaixo:
Para visualização de tabela: numOfRows:
cellForRawAt indexPath:
Se você notar que minha célula de carregamento é criada a partir de um arquivo nib. Este vídeo vai explicar o que eu fiz.
fonte
fonte
Para Xcode 10.1, Swift 4.2
Este vídeo parece um ótimo tutorial!
Projeto inicial / completo: https://github.com/RobCanton/Swift-Infinite-Scrolling-Example
fonte