我有一个问题与UITableView的didSelectRowAtIndexPath。
我的表已经设置好了,所以当我选择row时,它会初始化一个新的视图控制器并推送它。
当我第一次点击表中的任何一行时,该方法不会被调用。一旦我选择了另一行,它就开始正常工作。
我已经通过在didSelectRowAtIndexPath上设置断点验证了这一点。当添加一个NSLog的方法,我看到,当我选择第二行,最后推动新的视图控制器,我看到两个日志语句出现在控制台同时。
有什么建议吗?
我有一个问题与UITableView的didSelectRowAtIndexPath。
我的表已经设置好了,所以当我选择row时,它会初始化一个新的视图控制器并推送它。
当我第一次点击表中的任何一行时,该方法不会被调用。一旦我选择了另一行,它就开始正常工作。
我已经通过在didSelectRowAtIndexPath上设置断点验证了这一点。当添加一个NSLog的方法,我看到,当我选择第二行,最后推动新的视图控制器,我看到两个日志语句出现在控制台同时。
有什么建议吗?
当前回答
斯威夫特4.2
在属性检查器中禁用“延迟触摸”解决了这个问题。 之后,点击是流畅的和didSelectRowAt立即启动。
其他回答
斯威夫特2
确保你把这个设置为true:
self.tableView.allowsSelection = true
把它放在右边的viewDidLoad()之后,super.viewDidLoad()之前
检查是否在类中设置了任何手势识别器。移动手势对我有用。
当你在tableView中使用手势识别器时,这个问题也会发生,在这种情况下,你不需要删除它们,你只需要确保你的手势属性cancelsTouchesInView = false,这是一个布尔值,影响当手势被识别时触摸是否被传递到视图。
斯威夫特3
其他的答案都不适合我,让我解决问题的是:
tableView.delaysContentTouches = false
我甚至对张贴这个答案进行了辩论,因为我认为为了证明这一点,星星有点对准了。
我有这个问题的变化,并检查了其他解决方案。在我的表视图中,它不是在第一次点击时处理表的最后一行。它突出显示它,但是didSelectRowAtIndexPath没有被调用。其他行都没问题。但如果我打开tableviewbounce,问题似乎就解决了(但你必须处理tableviewbounce)