解开功能Swift 3



在我的寿命中,我无法弄清楚为什么我无法将此功能用于响应选择的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并修复了它。

我必须看看文档对此的看法。如果没有人尚未解释这种行为,我将更新我的答案。

最新更新