我正在编写一个带有tab视图中的表视图的iOS应用程序。在我的UITableViewController中,我实现了-tableView:didSelectRowAtIndexPath:,但当我在运行时选择一行时,该方法没有被调用。表格视图正在被填充,所以我知道控制器中的其他tableView方法正在被调用。
有没有人知道我到底搞砸了什么才让这一切发生的?
我正在编写一个带有tab视图中的表视图的iOS应用程序。在我的UITableViewController中,我实现了-tableView:didSelectRowAtIndexPath:,但当我在运行时选择一行时,该方法没有被调用。表格视图正在被填充,所以我知道控制器中的其他tableView方法正在被调用。
有没有人知道我到底搞砸了什么才让这一切发生的?
当前回答
检查- hightforrowatindexpath是否不返回0。
其他回答
如果你看了这个,那么问题还是没有解决。
我有自定义单元格,其中复选框“用户交互启用”是禁用的。所以,我只要打开它。祝你好运。
都是很好的答案,但还有一个需要注意……
(特别是当以编程方式创建UITableView时)
确保tableView可以通过设置[tableView setAllowsSelection:YES]来响应选择;或者删除任何将其设置为NO的行。
我也遇到过同样的问题。而且很难找到。但在我的代码中 是这样的:
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
return nil;
}
它必须返回indexPath,否则-tableView:didSelectRowAtIndexPath:没有被调用。
好的,在这里更新,因为我刚刚遇到了这个问题,我的问题与这里发现的略有不同。
我在IB中查看,看到我的委托被设置,但它被错误地设置为视图,而不是文件的所有者(右键单击表视图,查看委托指向的位置)。
希望这能帮助到别人
确保在主线程上调用reloadData。如果你从某种异步方法(例如:某种网络请求)调用该方法,表视图可能会或可能不会正确响应(在某些情况下,应用程序甚至会崩溃)。
使用主线程代码块来执行reloadData调用,如果调用是在其他一些方法块中进行的(你不确定):
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[tableView reloadData];
}];