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

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


当前回答

你必须检查这个 选择必须是单一选择,编辑必须是在编辑过程中没有选择 你也可以改变uttableviewcell属性中的设置 在表格视图单元格中编辑 样式必须是自定义的,标识符必须是Rid section为none

其他回答

我的问题不在上面。太差劲了。但我想我应该把它列在这里,也许它能帮助到别人。

I have a tableViewController that is my "base" controller and then I create subclasses of this controller. I was writing all my code in the tableView:didSelectRowAtIndexPath routine in the "base" class. Completely forgetting that by default this routine had also been created (albeit with no code that did anything) in all of my subclasses as well. So when I ran my app, it ran the subclass version of the code, did nothing, and made me sad. So of course, once I removed the routine from the subclasses, it used mt "base" class routine and I'm in business.

我知道。别笑。但也许这能帮别人省下我浪费的一小时…

在我的案例中,解决方案是在下面的函数中将NO更改为YES。

iOS 9 +

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

在我的例子中,只有一个细胞有这个问题。单元格以只读模式包含UITextView出口。虽然在点击前是只读的。一敲键盘,键盘就竖起来了。事实证明,它仍然需要禁用交互。

cell.content.scrollEnabled = NO;
cell.content.editable = NO;
cell.content.userInteractionEnabled = NO;
cell.content.delegate = nil;

[cell。content resignFirstResponder];

我重复了之前所有的答案,但没有一个对我有帮助。经过反复试验,我找到了一个不同的解决方案。我有一个UIImageView覆盖整个单元格(作为背景)。默认情况下,UIImageView禁用用户交互。通过启用imageviews用户交互委托方法-didSelectRowAtIndexPath:再次被调用。 如。

cell.imgView.userInteractionEnabled = YES;

以防你和我有同样的问题 显然,如果tableView处于编辑模式,这个方法不会被调用。你必须设置allowsSelectionDuringEditing为true。

通过这个问题:编辑时,' UITableView '不调用didSelectRowAtIndexPath ??