我有一个问题与UITableView的didSelectRowAtIndexPath。

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

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

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

有什么建议吗?


当前回答

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

其他回答

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

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

斯威夫特4.2

在属性检查器中禁用“延迟触摸”解决了这个问题。 之后,点击是流畅的和didSelectRowAt立即启动。

斯威夫特2

确保你把这个设置为true:

self.tableView.allowsSelection = true

把它放在右边的viewDidLoad()之后,super.viewDidLoad()之前

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

[tableView deselectRowAtIndexPath:indexPath animated:NO];

这对我很管用。