web-dev-qa-db-fra.com

Obtenir UICollectionView visible dans IndexPath dans Swift

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.

10
Shangari C

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.

15
Dari

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)
6
Anbu.Karthik

Cela fonctionnera bien.

func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {

    let visibleIndex = Int(targetContentOffset.pointee.x / collectionView.frame.width)
    print(visibleIndex)

}
2
kyl

Rapide, moyen plus sûr d’obtenir des objets visibles :

if let indexPaths = self.collectionView.indexPathsForVisibleItems {
    //Do something with an indexPaths array.
}
2
Hemang

Vous pouvez utiliser la méthode de UICollectionView en tant que:

let indexPath = NSIndexPath(item: value1, section: value2)
0
Ashvini