【问题标题】:TableView didSelectRowAtIndexPath not called未调用 TableView didSelectRowAtIndexPath
【发布时间】:2015-04-30 08:50:26
【问题描述】:

所以我在UIViewController 中添加了UIUITableView。我不能使用UITableViewController,原因我不需要解释,因为这将是不必要的信息。无论如何,我已经将delegate 和数据源设置为这个viewController。我还添加了委托和数据源协议。单元格已正确填充,因此数据源工作正常。我也可以滚动,所以一切正常。

但是,我无法触发 didSelectRowAtIndexPath。它应该触发,但不会。我已经读过,很多与此相关的问题都可以与UIGestureRecognizer 相关联,但我还没有实现。我也使用标准的 UITableView,所以不是定制的。

如果我长按单元格(3-4 秒),它会按预期触发。这表明另一个视图或吸收点击手势的东西存在问题,我无法控制。我将如何解决这个问题?

  1. 不,没有DeselectRowAtIndexPath。
  2. 是的,所有委托和数据源都是正确的,因为我可以让委托/源触发。
  3. 是的,在检查器中的 TableView 上设置了单选。
  4. 是的,一切都启用了用户交互。

如果我只是将代码复制到UITableViewController,它会工作得很好,但恐怕现在这不是一个选择。有人对如何解决这个问题有任何想法吗?大多数遇到此问题的人要么遇到了上面列表中的问题,要么在UITableView 上添加了UIGesture - 我没有。

【问题讨论】:

  • 你使用自定义UITableViewCell吗?这可能是一个问题。您是否尝试使用“Xcode 6 的 3D 视图”来查看您的 UITableView 是否“上方”有东西在捕捉事件?
  • 您是如何添加 tableview 的 - 以编程方式或通过界面生成器?表视图是作为子视图添加到 self.view 还是添加到其他对象(如滚动视图)?
  • 另外,是否有正在运行的进程可能会降低应用程序的速度?
  • 好吧..我知道有人要求您检查一些琐碎的事情,例如您的视图是否启用了用户交互可能很烦人...您已经提到 everything 是用户启用交互...只是想确保它是否包括单元格的内容视图..如果不是,那么您是否检查过单元格的任何子视图是否没有窃取触摸..
  • 您在 tableviewClass 中执行 UIGestureRecognizer 代码。如果是,则删除并检查。

标签: ios objective-c xcode uitableview delegates


【解决方案1】:

首先我想说我感谢这里提供的所有答案,它给了我很多尝试的东西,所以我学到了很多 - 谢谢!你的建议都没有奏效,只是因为我是个十足的白痴。我在帖子中说我没有实现UIGestureRecognizer,我没有......在那个类中,但在它的超类中。所以我实际上实现了它,但是在这个 ViewController 是一个子类的类中。我不记得的唯一原因是因为我已经好几个星期没看那个超级课了。

确实有人在 cmets 中建议我应该检查它,我确实这样做了,而且我已经确定我没有实现它,所以我很快将其驳回。但是现在,经过大约 4 个小时的调试和重新创建项目,逐个添加内容,我最终意识到,此时唯一不同的是 Super Class,以及我打开文件时看到的第一段代码up 是一个 GestureRecognizer...

所以以后每个人都要记住这一点——我知道我会的。再次感谢您的帮助!

真诚地, 彻头彻尾的白痴。

【讨论】:

    【解决方案2】:

    确保您没有在该单元格中添加任何控制器,该控制器覆盖整个单元格,并且该控制器的用户交互已启用。 由于启用了该控制器的用户交互,该控制器会执行点击操作,当您长按该单元格时,该单元格将接收您的点击。

    例子:

    UIView *_view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, _cellWidth, _cellHeight)];
    [_view setUserInteractionEnabled:YES];
    [cell.contentView addSubview:_view];
    

    在上述情况下,该视图让您点击单元格。

    【讨论】:

    • 我还没有添加任何东西。我所拥有的只是一个 ViewController,它的标准 UIView,其中有一个 UITableView,其中添加了一个标准 UITableViewCell - 全部通过界面构建​​器。 ViewController当然为datasource和delegate实现了相应的delegate,这些也是在IB中为TableView设置的。除了 TableView 的委托方法之外,我没有任何一行代码可以更改有关单元格或 TableView 的任何内容:/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多