Le chargement des cellules supplémentaires au bas de UICollectionView
Je suis en train d'essayer d'obtenir automatiquement et charger la page suivante de cellules lorsque l'utilisateur fait défiler vers le bas de laUICollectionView
.
Je suis en mesure de le faire par l'ajout d'un UIButton
dans UICollectoinView
pied de page. Lorsque l'utilisateur fait défiler vers le pied de page et touche le bouton, de nouvelles cellules sont ajoutées correctement. UIButton
dans le pied de page peuvent être touchées par l'ajout de plusieurs pages.
J'ai essayé d'automatiser ainsi, lorsque l'utilisateur fait défiler vers le bas, la bonne méthode pour ajouter de nouvelles cellules est appelée automatiquement:
- (UICollectionReuseableView *)collectionView: (UICollectionView *)collectionView viewForSupplementaryElementOfKind: (NSString *)kind atIndexPath: (NSIndexPath *) indexPath
{
//code for headerView
//...
//code for footerView
MySupplementalFooter *footerView = nil;
if ( [kind isEqual:UICollectionElementKindSectionFooter] )
{
footerView = [self.collectionView dequeueReuseableSupplemntaryViewOfKind:kind withReuseIdentifier:@"FooterId" forIndexPath:indexPath];
if (LoadMoreIsEnabled)
{
footerView.loadMoreFooterButton.setHidden:NO];
[self loadMoreFooterButtonAction]; //calls the method to add cells to the dictionary for cv
} else
{
footerView.loadMoreFooterButton setHidden:YES];
}
return footerView;
}
}
La loadMoreFooterButtonAction
méthode est appelée, mais l'ensemble de la UICollectionView
blancs. L'actualisation de la UICollectionView
ne pas la ramener.
UICollectionView blanks out
OMG, c'était mon cas, j'ai essayé façons habituelles avec willDisplayCell
mais la vue de collection réinitialise et devient vide (wtf). Enfin, mis en œuvre à l'aide de scrollViewDidScroll
.OriginalL'auteur kzia | 2013-06-18
Vous devez vous connecter pour publier un commentaire.
Je suis en supposant que vous essayez de faire quelque chose comme "infini défilement" à partir du bureau des pages web, où vous chargez du contenu lorsqu'un utilisateur arrive en bas d'une page. Sur iOS, ce n'est pas très couramment utilisé de la conception. Généralement, les développeurs d'initialiser leur UITableView ou UICollectionView avec l'absolue du nombre total de participations. S'ils ont besoin de flux de données sur le réseau, ils asynchrone charger les données si nécessaire (lorsque les cellules ou les vues venir sur l'écran) et jusqu'à ce que le chargement du contenu qu'ils montrent une sorte de temporaire de contenu, comme une vue vierge avec un spinner.
Cela dit, si vous voulez faire infini défilement d'une manière plus comme un ordinateur de bureau web app, vous devez mettre en œuvre la UIScrollViewDelegate protocole (ou UICollectionViewDelegate, qui est un sur-ensemble) et écouter de la scrollViewDidScroll: de rappel. Au sein de ce rappel, itérer sur les UICollectionView de indexPathsForVisibleItems et vérifier pour voir si l'un des chemins d'accès index de la carte de la "dernière" de l'élément dans votre collection, ce qui indique que l'utilisateur a fait défiler jusqu'à la fin. À ce moment, faites appel à votre logique pour charger plus de choses.
OriginalL'auteur Idles
Dans IOS8 il y a un
UICollectionViewDelegate
méthodewillDisplayCell
.Pas de boucle pour moi, fonctionne bien.
Je voudrais ajouter un comportement de connaissances. Si l'utilisateur fait défiler en haut et en bas, même si, à la fin de cette section, vous pouvez avoir une situation où loadData() est appelée plus d'une fois. J'ai ajouté un bool pour le contrôle lorsque loadData() peut être appelé de nouveau. Cependant, indexPath.l'élément est exactement la dynamique de référence à utiliser. Bon appel de stackoverflow.com/users/2604669/nick-wargnier
UICollectionView blanks out
personne ne l'expérience de cette? J'ai essayé d'habitudewillDisplayCell
mais la vue de collection réinitialise et devient vide (wtf).J'ai eu le même problème, et il s'est avéré être parce que reloadData n'était pas appelée sur le thread principal. Je suis sûr que c'est pas trop tard, mais pour d'autres à l'avenir!
OriginalL'auteur Nick Wargnier
En vue tableau, vous devez charger des données plus dans willDisplayCell() la méthode. Avec les collections, il n'y a pas une telle contrepartie. Mais, vous pouvez faire comme ceci. L'espoir, ça aide.
Que devrions-nous mettre en œuvre dans loadMoredata méthode?
J'ai mis à jour ma réponse. Ceci est un exemple avec AFNetworking.
Mais, beaucoup d'applications encore le support de iOS 7.
Je suis en train de faire de même. Mais, le problème est que Si je insérer des cellules précédentes cellules disparaissent puis chargé et collectionView parchemins de lui-même vers le haut. @Sukhrob je suis en utilisant Xcode pour iOS app ciblage iOS 10 et les versions ultérieures.
OriginalL'auteur Sukhrob
Je sais que c'est une vieille question, mais je vais vous donner une solution pour l'avenir de réponse des demandeurs. Habituellement, quand je fais de l'infini défilement sur une UITableView, je vais vérifier si les limites de la tableView de la scrollview intersection avec le rect de la tableFooterView. Le pied de page vues sont un peu plus compliqué à obtenir dans UICollectionViews, j'ai donc créer un rect à la fin de la collectionView, voir si elle croise la scrollView limites, et si elle le fait, je peux charger plus d'articles. J'ai également vérifié que l'on a au moins quelque chose dans la table donc je ne vais pas sauvage en essayant de charger plus de droit lorsque la table instancie.
Remarque: Votre
more
méthode, dans ce cas, mettez à jour votre collectionView source de données, avec l'ajout de nouveaux éléments. Votre numberOfItems/sections méthodes doivent refléter le nouveau compte.Ce n'est pas de travail pour vous @c0d3Junk13?
Fonctionne très bien pour moi dans ma collection vue
Cela appelle [auto plus] un tas de fois au lieu de l'appeler une fois comme prévu.
Correct. En plus, vous aurez besoin d'ajouter de l'état pour indiquer si vous êtes dans le processus de chargement plus.
OriginalL'auteur Ian Hoar
Vous pouvez également utiliser
collectionView(_:prefetchItemsAt:)
Tutoriel Un et Deux.
OriginalL'auteur Nik Kov
J'ai fait face à des difficultés à convertir @sukhrob la réponse de swift pour mon projet, donc voici son code Swift 3 pour faciliter le copier-coller.
OriginalL'auteur Akhilendra Singh