展开函数swift 3

时间:2017-06-28 04:14:35

标签: ios swift uiscrollview uicollectionview

对于我的生活,我无法弄清楚为什么我无法使这个功能工作以响应indexPath被选中。

当我在didSelectItemAtIndexPath中的行中添加一个断点时,它会中断,但是当我在viewscontroller类中添加一个函数时,它就不会中断。好像信息正在发送但无法到达目的地。我的控制台没有错误,我多次查看过所有内容。

这可能是一个xcode错误还是我错过了什么?

这里我引用它所在的类

var viewsController: ViewsController?

这是我的didSelectItemAtIndexPath

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

    viewsController?.scrollToMenuIndex(indexPath.item)
    print(indexPath.item)

}

这是函数本身

func scrollToMenuIndex(_ menuIndex: Int) {
    let indexPath = IndexPath(item: menuIndex, section: 0)
    collectionView?.scrollToItem(at: indexPath, at: UICollectionViewScrollPosition(), animated: true)

}

2 个答案:

答案 0 :(得分:0)

您的viewsController已声明但尚未初始化。所以不知道调用哪个类方法。

var viewsController: ViewsController?

如果scrollToMenuIndex属于同一个班级,那么scrollToMenuIndex(indexPath.item)就足够了!如果它不在同一个视图控制器中,则需要将viewsController初始化为

 func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
     let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
     let viewsController= storyboard.instantiateViewController(withIdentifier: "someViewController")
     viewsController?.scrollToMenuIndex(indexPath.item)
     print(indexPath.item)
  }

希望它有所帮助。快乐编码!!

答案 1 :(得分:0)

有效的引用为viewsController返回nil。

所以在闭包中引用了我用于didSelectItemAtIndexPath(位于viewsController中)的单元格的集合视图,

我必须添加c.viewsController = self并修复它。

我必须看看文档中有关此内容的内容。如果还没有人解释这种行为,我会更新我的答案。