首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >collectionView didSelectItemAtIndexPath在迁移到Xcode10.2后停止工作

collectionView didSelectItemAtIndexPath在迁移到Xcode10.2后停止工作
EN

Stack Overflow用户
提问于 2019-04-05 11:14:08
回答 3查看 637关注 0票数 1

在安装了最新的Mojave macOS之后,我刚刚将我的Xcode升级到了10.2版本。

Xcode要求我将我的Swift从3.0迁移到更高版本,所以我选择更新到Swift 5.0。

在语法更改方面做了一些小改动之后,应用程序就启动并运行了。但是,我发现collectionView didSelectItemAtIndexPath在模拟器或设备中停止工作,这意味着当您点击collectionView中的一个项目时,相应的didSelectItemAtIndexPath方法不再被调用。

我多次检查我的代码更改,我非常确定语法更改与受影响的collectionViews无关。我可以做一些TagGesture技巧来解决,但我想知道这里的问题是什么。

我非常确定集合视图允许用户交互,也允许选择。

这里发生了什么事?

更新:

我的旧代码在迁移后没有任何变化,看起来是这样的:

代码语言:javascript
复制
func collectionView(_ collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: IndexPath) {
...
}

我更新了以下每个回答者的建议。但是,还是不能工作。

代码语言:javascript
复制
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
...
}

(我甚至没有接触xib文件,委托都是正确的。)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-05 11:30:33

委托方法可能已重命名。检查您是否正在实现:

代码语言:javascript
复制
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)

还要仔细检查是否仍将控制器设置为UICollectionView的委托。

票数 3
EN

Stack Overflow用户

发布于 2019-04-24 04:50:34

看看这个问题和答案:https://stackoverflow.com/a/55393950/1943064

本质上,swift 5上有一个关于由超类实现的协议的可选方法实现的bug。如果可选方法在超类中缺失,那么它在子类中也会被标识为缺失。

在通过这个帖子后,我最终到达了那里。这才是我真正的罪魁祸首。还请记住,在构建开发时对文件进行任何更改都可能会随机修复问题(比如添加一些人建议的shouldSelectItemAt。我这样做了,它修复了它,然后我移除了它,它继续工作。然而,我的circleCI构建在100%的情况下仍然是坏的)。

票数 4
EN

Stack Overflow用户

发布于 2021-03-20 08:50:00

您是否在集合视图单元格中放置了按钮或交互式视图?你的触摸是由它处理的,那么didSelect就不会被调用。

代码语言:javascript
复制
button.isUserInteractionEnabled = false

奇怪的是,这个问题只发生在我使用较旧的iOS版本(较旧的设备)的情况下,但这个问题已经解决了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55527710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档