在我的寿命中,我无法弄清楚为什么我无法将此功能用于响应选择的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)
}
您的 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)
}
希望它有帮助。快乐的编码!
有效时的参考为ViewScontroller返回零。
因此,在引用了我用于didSelectItemAtIndexPath
的单元格(位于ViewScontroller中(的收集视图中,
我不得不添加C.ViewScontroller = self并修复了它。
我必须看看文档对此的看法。如果没有人尚未解释这种行为,我将更新我的答案。