UITableView didSelectRow 未调用
Posted
技术标签:
【中文标题】UITableView didSelectRow 未调用【英文标题】:UITableView didSelectRow not called 【发布时间】:2018-06-27 08:37:25 【问题描述】:在一个 ios 应用程序中,我有一个 ViewController,它有一个 ContainerView,其中有一个 ViewController(比如 VC2),使用的是 Embed Segue。这个 VC2 拥有一个 UITableView 并且它的数据源和委托被设置为 VC2 并且也符合 UITableViewDataSource 和 UITableViewDelegate 协议。 现在单元格被完美地渲染了,所以 dataSource 看起来不错。但是当我尝试选择一行时,什么也没有发生,所以代表似乎有问题。 但是,委托方法 willDisplayCell 和 shouldHightlightRowAt 确实会被调用。而且我只实现了这些方法来检查委托是否设置正确。不,我确实不实现了 didDeselectRowAt 方法,这是一个常见的错误。
在 IB 中,tableview 拥有两个动态原型单元格,Selection 属性设置为 Single Selection,Style 设置为 平原。 UITableViewCell 的 Style 设置为 Custom,Selection 设置为 Default。
为什么不调用 didSelectRowAt 方法?我确实检查了设置为 false 的 isEditing 属性;编辑与我的情况无关。
这是我的 didSelect 方法:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
print("didSelectRowAt (indexPath.row)")
我使用 Swift 4。
【问题讨论】:
你能在你使用的 swift 版本中包含 didSelect 方法声明吗 更新了问题。 将您的代码添加到您的问题中,它将帮助我们找到问题。 控制器上还有其他手势识别器吗? 是的,设置为 ViewController 主视图的滑动手势。这用于将容器动画到屏幕左侧;容器用作菜单。 【参考方案1】:很抱歉,Xcode 似乎给了我很大的困难。 我刚刚从情节提要中删除了 ViewController 并再次从头开始构建它。还为 VC 创建了一个新文件,现在一切正常。有时要走的路是删除所有工作并重新开始,在这种特殊情况下......确实如此。
我真的不能说可能是什么原因;但似乎故事板文件中有些东西搞砸了。至少,这是我最好的猜测。
浪费了一些时间...无论如何感谢您的参加...
【讨论】:
以上是关于UITableView didSelectRow 未调用的主要内容,如果未能解决你的问题,请参考以下文章
didSelectrow 不适用于滚动视图和表格视图(iOS)
而在 indexPath 的 didselectrow 上选择取消选择行时会崩溃