swift-在collectionview单元类和collectionview控制器之间调用一个函数

时间:2018-07-15 22:50:09

标签: ios swift uicollectionview cell collectionview

嗨,我一直在与这个问题作斗争一段时间,无法解决。

我想做的是,按下collectionview单元格内的一个按钮,然后执行到下一个单元格的转换。

这是我想在collectionview控制器类内部调用的函数:

func done(){
    let scrollIndex: NSIndexPath = NSIndexPath(item: 1, section: 0)// NSIndexPath(forItem: 0, inSection: 0)
    CollectionViewet.scrollToItem(at: scrollIndex as IndexPath, at: .centeredHorizontally, animated: true)
}

发生的事情是,当我从collectionview控制器调用一个函数时,它给了我

  

在展开可选值时意外发现nil

我做错了什么?

1 个答案:

答案 0 :(得分:1)

UICollectionViewController默认具有一个名为collectionView的子视图,您可以使用该子视图滚动到某个项目

因此,如果您正确地覆盖了数据源委托方法,则应该可以如下滚动

func done() {

    let numberOfRows = collectionView?.numberOfItems(inSection: 0) ?? 0

    guard numberOfRows > 1 else { return }

    let indexPath = IndexPath(row: 1, section: 0)

    collectionView?.scrollToItem(at: indexPath, at: .centeredHorizontally, animated: true)
}

我添加了guard行,以防止由于某种原因在数据为空的情况下使应用程序崩溃。