如何获取当前单元格的indexPath

时间:2017-03-28 00:05:02

标签: ios swift uicollectionview nsindexpath

我目前正在尝试创建一种方法来删除indexPath为1的集合视图中的项目。到目前为止,我已经使用了一些帮助来创建一个带有scrollview的函数,滚动创建了一种方法来计算当前图像方法用户所在的图像。我现在需要一种方法来计算用户所在的单元格。这是我的代码>

 var currentImage = 0
   func scrollViewDidScroll(_ scrollView: UIScrollView) {
let x = floor(myCollectionView.contentOffset.x / view.frame.width)
if Int(x) != currentImage {
    currentImage = Int(x)
    //print(currentImage)
}
if currentImage > 0 {
                for collectionCell in myCollectionView.visibleCells  as [UICollectionViewCell]    {
        let indexPath = myCollectionView.indexPath(for: collectionCell as UICollectionViewCell)!
       let indexPathOfLastItem = (indexPath?.item)! - 1
            let indexPathOfItemToDelete = IndexPath(item: (indexPathOfLastItem), section: 0)
            imageArray.remove(at: 0)
            myCollectionView.deleteItems(at: [indexPathOfItemToDelete])
            currentImage =  1

2 个答案:

答案 0 :(得分:2)

根据评论而不是实际问题,您似乎想要的是获取第一个可见单元格的索引路径,以便您可以使用该路径删除单元格。

let visibleCells = myCollectionView.visibleCells
if let firstCell = visibleCells.first() {
    if let indexPath = myCollectionView.indexPath(for: collectionCell as UICollectionViewCell) {
        // use indexPath to delete the cell
    }
}

这些都不应在scrollViewDidScroll委托方法中使用或完成。

答案 1 :(得分:2)

[已为Swift 5.2更新] 这是一种比@rmaddy的回答略简洁的方法(但这种方法很好用):

guard let indexPath = collectionView.indexPathsForVisibleItems.first else {
    return
}

// Do whatever with the index path here.