Comment puis-je déterminer si l'utilisateur a défilé dans la dernière cellule / bas de l'utableview? p>
3 Réponses :
Utiliser Source: Une autre question p> nsarray * chemins = [TableView IndexPathsforvisiblers]; code>. Ensuite, vérifiez si le dernier objet de cette matrice est l'index de la cellule finale. P>
UitailView hérités de UiscrollView et Scroll View expose une propriété Utilisez-le avec un peu de mathématiques pour déterminer si le conteneurOffset est dans cadre.size.height code> du bas. p> mise à jour: Voici un coup de poignard dans une formule qui vous donnera ce que vous voulez: P> contentoffset code> (Documentation ICI ).
if(tableView.contentOffset.y >= (tableView.contentSize.height - tableView.frame.size.height)) {
//user has scrolled to the bottom
}
Le code est presque là! Je peux détecter le fond, mais lorsque je vais en bas, le code dans le bloc IF est appelé plusieurs fois si l'utilisateur détient la position de défilement. Comment puis-je résoudre?
Peut-être que vous pourriez ajouter une minuterie lors du défilement, invalider tout minuteur actuel, et une fois que la minuterie fente (par exemple après 250ms), vous pouvez exécuter votre code. Sans plus de détails, il est très difficile de suggérer la bonne chose cependant.
mettre ce code dans ScrollViewDidendDeceleratier, cela s'assurera qu'il ne tire qu'une seule fois au lieu de plusieurs fois.
Grâce aux versions IOS plus récentes, la fonction WilldisplayCell est facile:
func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) { }
Cela s'appellera lorsque les éléments ont été insérés et que la table est automatiquement défilée sans interactions utilisateur.