UITableView didSelectRowAtIndexPath:在第一次点击时不被调用

我遇到了UITableView's didSelectRowAtIndexPath

我的表设置,所以当我select行时,它初始化一个新的视图控制器,并推动它。

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

我通过在didSelectRowAtIndexPath上设置断点来validation这一点。 当我添加一个NSLog的方法,我看到当我select最后推新视图控制器的第二行,我看到两个日志语句同时出现在控制台中。

有什么build议么?

你意外键入的任何机会做De selectRowAtIndexPath?

同时检查xib文件中表格视图的select属性。 根据需要使用“单选”或“多选”。

我遇到以下问题:

  • 第一次点击行 – >没有效果,没有select, 从来没有
  • 第二次点击并遵循 – >正确的select行为, 总是

在我的情况下,我的错误是检查在界面生成器Show Selection on Touch 。 您可以在IB中取消选中它:

在这里输入图像描述

希望能帮助别人

检查您是否在class级中设置了任何手势识别器。 删除手势为我工作。

我甚至发表了这个答案,因为我认为明星的types是为了performance自己。

我有这个问题的变化,并已检查其他解决scheme。 在我的表格视图中,它不是处理我的表格的最后一行的第一个水龙头。 它突出显示它,但是没有调用didSelectRowAtIndexPath 。 所有其他行工作正常。 但是,如果我把表格反弹,那么它似乎解决了这个问题(但是你必须处理一个tableview反弹)。

UITableViewCellSelectionStyleNone被设置为显示该问题的单元(ios9)。

我已经结束了通话

 [tableView deselectRowAtIndexPath:indexPath animated:NO]; 

第一件事

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

这是不一样的,但是足够好。 让我想知道ios10带来了什么样的表破坏。

SWIFT 2

确保你有这个设置为true:

self.tableView.allowsSelection = true

把这个放在你的viewDidLoad()super.viewDidLoad()之前,

SWIFT 3

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

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

这工作对我来说,虽然我刚刚将我的项目迁移到Swift 3.这是相当新的,所以这可能会稍后修复。

didSelectRowAt函数没有在我的应用程序中第一次或第二次敲…我正试图解决问题找不到任何解决scheme。 但突然我知道,我正在使用view.animation颜色更改…委托方法没有被调用,而animation仍然存在