我目前正在尝试创建一种方法来删除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
答案 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.