【问题标题】:UITableView didSelectRow not calledUITableView didSelectRow 未调用
【发布时间】: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 主视图的滑动手势。这用于将容器动画到屏幕左侧;容器用作菜单。

标签: ios swift uitableview didselectrowatindexpath


【解决方案1】:

很抱歉,Xcode 似乎给了我很大的困难。 我刚刚从情节提要中删除了 ViewController 并再次从头开始构建它。还为 VC 创建了一个新文件,现在一切正常。有时要走的路是删除所有工作并重新开始,在这种特殊情况下......确实如此。

我真的不能说可能是什么原因;但似乎故事板文件中有些东西搞砸了。至少,这是我最好的猜测。

浪费了一些时间...无论如何感谢您的参加...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 2010-09-15
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    相关资源
    最近更新 更多