【问题标题】:method isn't overriding any function from superclass (override func collectionView) [duplicate]方法没有覆盖超类中的任何函数(覆盖 func collectionView)[重复]
【发布时间】:2017-03-13 04:36:22
【问题描述】:

尝试在集合视图上注册一个点击以使用以下方法关闭键盘

   override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath){
    inputTextField.endEditing(true)

}

但是我收到一个编译错误,说该方法没有覆盖它的超类中的任何方法。

该类的类型为 UICollectionViewController 和 UICollectionViewDelegateFlowLayout

同样使用 swift 3。

谢谢。

【问题讨论】:

    标签: ios swift swift3 keyboard uicollectionview


    【解决方案1】:

    这不是 Swift 3 函数——你想要它的更新版本——你可以知道,因为它的第一个参数前面没有 _。你真正想要的是:

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

    改用那个,一切都会正常。

    【讨论】:

    • 这个问题我不容易发现,哈哈。
    • @chengsam 从 Swift 2 -> 3 转换大型项目时,我真的非常非常难受
    • 我学习 swift 已经有一段时间了,刚刚开始更新到 swift 3。顺便说一句,解决方案效果很好。谢谢。
    • 嗨@sschale,你能解释一下这个下划线是什么吗?我对 Swift 完全陌生,很长时间没有做过任何 UI 开发。这个结构让我很困惑;这些回调是在 CollectionView 类上,还是我们覆盖了基类上的方法重载?
    • 对于任何在这里晃荡的人,我用 1 个 Google 搜索回答了我自己的问题(是的,我知道):stackoverflow.com/questions/39627106/…
    【解决方案2】:

    只需删除 override 关键字即可。

    【讨论】:

    • 移除覆盖会移除错误,但不会在集合视图上注册点击。
    • 你的班级是否实现了UICollectionViewDelegateFlowLayout?并确保您的 collectionView 已设置委托。
    • 我使用 sizeForItemAtIndexPath 非常好,所以我知道 UICollectionViewDelegateFlowLayout 已实现并且委托已设置。 didSelectItemAtIndexPath 有新语法吗?
    • sschale 的答案应该是您的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多