对于我的生活,我无法弄清楚为什么我无法使这个功能工作以响应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)
}
答案 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并修复它。
我必须看看文档中有关此内容的内容。如果还没有人解释这种行为,我会更新我的答案。