TableView didSelectRowAtIndexPath未被调用

时间:2015-04-30 08:50:26

标签: ios objective-c xcode uitableview delegates

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

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

如果我长按细胞(3-4秒),它会按照预期被触发。这表明另一种观点或吸收轻敲手势的东西存在一些问题,我无法控制。我该如何解决这个问题?

  1. 不,不是 De selectRowAtIndexPath。
  2. 是的,所有代表和数据源都是正确的,因为我可以触发代理/来源。
  3. 是,在检查器中的TableView上设置单选。
  4. 是的,所有内容都启用了用户互动。
  5. 如果我只是将代码复制到UITableViewController它会正常工作,但是现在这不是一个选项,我很害怕。有人对如何解决这个问题有任何想法吗?大多数遇到此问题的人要么在上面的列表中遇到问题,要么在UIGesture之上添加了UITableView - 我没有。

2 个答案:

答案 0 :(得分:1)

首先我要说的是,我很欣赏这里提供的所有答案,它给了我很多尝试,所以我学到了很多东西 - 谢谢!你的建议都没有,但仅仅因为我是一个完全白痴。我在帖子中说我没有实现UIGestureRecognizer我没有...在那个类中,但是在它的超级类中。所以我实际上是DID实现它,但在一个类中,这个ViewController是一个子类。我不记得它的唯一原因是因为我已经好几周都没看过那个超级班了。

有人在评论中建议我检查它,我做了,我已经确定我没有实施,所以我很快就驳回了它。但是现在,经过大约4个小时的调试和重新创建项目,逐个添加东西,我终于意识到,此时唯一不同的是Super Class,以及我打开文件时看到的第一段代码up是一个GestureRecognizer ......

所以在未来的每个人都要牢记这一点 - 我知道我会。再次感谢您的帮助!

此致 完全白痴。

答案 1 :(得分:0)

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

示例:

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

在上面的情况中,该视图让你的小区设置了一个小区。