我正在编写一个带有tab视图中的表视图的iOS应用程序。在我的UITableViewController中,我实现了-tableView:didSelectRowAtIndexPath:,但当我在运行时选择一行时,该方法没有被调用。表格视图正在被填充,所以我知道控制器中的其他tableView方法正在被调用。

有没有人知道我到底搞砸了什么才让这一切发生的?


当前回答

这可能只是在我的情况下,但我从备份中重新加载了一些文件,一些东西不能工作,包括这个。在做了完全清洁(产品>清洁或Shift +命令+ K)后,它工作了。可能是在预编译的头文件中搞砸了。这对你来说可能不是问题,但值得一试。

其他回答

检查你的viewController是否有以下方法:

- (BOOL) tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
    return NO;
}

如果你返回“NO”,didSelectRow将不会被调用

对此发表我的意见。

我有一个自定义UITableViewCell,有一个按钮覆盖整个单元格,所以当触摸发生时,按钮被选中,而不是单元格。

要么删除按钮,要么在我的情况下,我将按钮上的User interaction Enable设置为false,这样单元格就被选中了。

都是很好的答案,但还有一个需要注意……

(特别是当以编程方式创建UITableView时)

确保tableView可以通过设置[tableView setAllowsSelection:YES]来响应选择;或者删除任何将其设置为NO的行。

在我的情况下,我犯了一个小错误,我分配:

tableView.isUserInteractionEnabled = false

它应该是:

tableView.isUserInteractionEnabled = true

检查- hightforrowatindexpath是否不返回0。