Comment obtenir visible IndexPath
alors que scrolling
dans collectionView
, j'ai mentionné plusieurs link1 , link2 Mais indexPathForCell
n'est pas pris en charge dans Swift.
Avez-vous essayé la fonction de délégué?
public func indexPathsForVisibleItems() -> [NSIndexPath]
ou
collectionView.indexPathsForVisibleItems()
ceux-ci doivent vous donner ce que vous vouliez.
essaye ça
Sur délégué
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
for cell in yourCollectionViewname.visibleCells() as [UICollectionViewCell] {
let indexPath = yourCollectionViewname.indexPathForCell(cell as UICollectionViewCell)
NSLog("%@", indexPath)
}
}
Choix-2
Cliquez sur le bouton
var point : CGPoint = sender.convertPoint(CGPointZero, toView:yourCollectionViewname)
var indexPath =yourCollectionViewname!.indexPathForItemAtPoint(point)
Être visible Tous les objets
vous pouvez utiliser indexPathsForVisibleRows
Retourne un tableau de chemins d'index identifiant chacun une ligne visible dans le récepteur.
- (NSArray *) indexPathsForVisibleItems;
var visible: [AnyObject] = yourCollectionViewname.indexPathsForVisibleItems
var indexpath: NSIndexPath = (visible[0] as! NSIndexPath)
Cela fonctionnera bien.
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
let visibleIndex = Int(targetContentOffset.pointee.x / collectionView.frame.width)
print(visibleIndex)
}
Rapide, moyen plus sûr d’obtenir des objets visibles :
if let indexPaths = self.collectionView.indexPathsForVisibleItems {
//Do something with an indexPaths array.
}
Vous pouvez utiliser la méthode de UICollectionView en tant que:
let indexPath = NSIndexPath(item: value1, section: value2)