我有一个问题与UITableView的didSelectRowAtIndexPath。
我的表已经设置好了,所以当我选择row时,它会初始化一个新的视图控制器并推送它。
当我第一次点击表中的任何一行时,该方法不会被调用。一旦我选择了另一行,它就开始正常工作。
我已经通过在didSelectRowAtIndexPath上设置断点验证了这一点。当添加一个NSLog的方法,我看到,当我选择第二行,最后推动新的视图控制器,我看到两个日志语句出现在控制台同时。
有什么建议吗?
我有一个问题与UITableView的didSelectRowAtIndexPath。
我的表已经设置好了,所以当我选择row时,它会初始化一个新的视图控制器并推送它。
当我第一次点击表中的任何一行时,该方法不会被调用。一旦我选择了另一行,它就开始正常工作。
我已经通过在didSelectRowAtIndexPath上设置断点验证了这一点。当添加一个NSLog的方法,我看到,当我选择第二行,最后推动新的视图控制器,我看到两个日志语句出现在控制台同时。
有什么建议吗?
当前回答
我遇到了以下问题:
第一次点击行->没有效果,没有选择,从来没有 第二次点击和下面->正确的选择行为,总是
在我的情况下,我的错误是在界面生成器的触摸上检查显示选择。你可以在IB中取消勾选:
希望这能帮助到别人
其他回答
在我的例子中,我有一个带有手势识别器的UITableView节头。当点击标题时,它应该在该部分中插入几行,并使插入动画化(如展开/折叠部分)。 第一次展开和点击时,didSelectRow委托方法没有被触发。对于进一步的开采和扩展/收缩操作,它的工作情况与预期一致。
根据@Ayoub Nouri的回答,我将cancelsTouchesInView设置为false,这解决了问题。 tapGestureRecognizer ?。cancelsTouchesInView = false
你有没有不小心输入了didDeselectRowAtIndexPath?
如果你在你的类中设置了任何UITapGestureRecognizer,你可以在你的didSelectRowAtIndexPath中添加这一行:
[tableView deselectRowAtIndexPath:indexPath animated:NO];
这对我很管用。
斯威夫特4.2
在属性检查器中禁用“延迟触摸”解决了这个问题。 之后,点击是流畅的和didSelectRowAt立即启动。
对我来说有用的是开始输入“didSelect…”,然后让自动更正填充剩下的部分。显然我的一些语法细节是不可靠的。正如其他人所说,使用IDE!!