我有一个问题与UITableView的didSelectRowAtIndexPath。

我的表已经设置好了,所以当我选择row时,它会初始化一个新的视图控制器并推送它。

当我第一次点击表中的任何一行时,该方法不会被调用。一旦我选择了另一行,它就开始正常工作。

我已经通过在didSelectRowAtIndexPath上设置断点验证了这一点。当添加一个NSLog的方法,我看到,当我选择第二行,最后推动新的视图控制器,我看到两个日志语句出现在控制台同时。

有什么建议吗?


当前回答

你有没有不小心输入了didDeselectRowAtIndexPath?

其他回答

也检查xib文件中表视图的选择属性。按需要使用“单选”或“多选”。

我甚至对张贴这个答案进行了辩论,因为我认为为了证明这一点,星星有点对准了。

我有这个问题的变化,并检查了其他解决方案。在我的表视图中,它不是在第一次点击时处理表的最后一行。它突出显示它,但是didSelectRowAtIndexPath没有被调用。其他行都没问题。但如果我打开tableviewbounce,问题似乎就解决了(但你必须处理tableviewbounce)

如果你在你的类中设置了任何UITapGestureRecognizer,你可以在你的didSelectRowAtIndexPath中添加这一行:

[tableView deselectRowAtIndexPath:indexPath animated:NO];

这对我很管用。

didSelectRowAt函数没有被调用在我的应用程序在第一次或第二次点击… 我试图解决这个问题却找不到任何解决方法。但突然间我意识到,我用的是视图。动画颜色变化…动画持续时未调用委托方法

斯威夫特3

如果你在一个不是UITableViewController的类中使用Swift 3,并且你正在使用UITableViewDelegate,那么你可能需要使用方法title:

@objc(tableView:didSelectRowAtIndexPath:) func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){...}

这对我来说很有效,尽管我刚刚将我的项目迁移到Swift 3。这是一个相当新的问题,所以稍后可能会修复。