方法没有覆盖超类中的任何函数(覆盖 func collectionView)[重复]
Posted
技术标签:
【中文标题】方法没有覆盖超类中的任何函数(覆盖 func collectionView)[重复]【英文标题】:method isn't overriding any function from superclass (override func collectionView) [duplicate] 【发布时间】:2017-03-13 04:36:22 【问题描述】:尝试在集合视图上注册一个点击以使用以下方法关闭键盘
override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
inputTextField.endEditing(true)
但是我收到一个编译错误,说该方法没有覆盖它的超类中的任何方法。
该类的类型为 UICollectionViewController 和 UICollectionViewDelegateFlowLayout
同样使用 swift 3。
谢谢。
【问题讨论】:
【参考方案1】:这不是 Swift 3 函数——你想要它的更新版本——你可以知道,因为它的第一个参数前面没有 _
。你真正想要的是:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
改用那个,一切都会正常。
【讨论】:
这个问题我不容易发现,哈哈。 @chengsam 从 Swift 2 -> 3 转换大型项目时,我真的非常非常难受 我学习 swift 已经有一段时间了,刚刚开始更新到 swift 3。顺便说一句,解决方案效果很好。谢谢。 嗨@sschale,你能解释一下这个下划线是什么吗?我对 Swift 完全陌生,很长时间没有做过任何 UI 开发。这个结构让我很困惑;这些回调是在 CollectionView 类上,还是我们覆盖了基类上的方法重载? 对于任何在这里晃荡的人,我用 1 个 Google 搜索回答了我自己的问题(是的,我知道):***.com/questions/39627106/…【参考方案2】:只需删除 override
关键字即可。
【讨论】:
移除覆盖会移除错误,但不会在集合视图上注册点击。 你的班级是否实现了UICollectionViewDelegateFlowLayout
?并确保您的 collectionView 已设置委托。
我使用 sizeForItemAtIndexPath 非常好,所以我知道 UICollectionViewDelegateFlowLayout 已实现并且委托已设置。 didSelectItemAtIndexPath 有新语法吗?
sschale 的答案应该是您的解决方案。以上是关于方法没有覆盖超类中的任何函数(覆盖 func collectionView)[重复]的主要内容,如果未能解决你的问题,请参考以下文章
覆盖 touchesBegan:错误 - 方法不会覆盖超类中的任何方法