【发布时间】: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