我正在编写一个带有tab视图中的表视图的iOS应用程序。在我的UITableViewController中,我实现了-tableView:didSelectRowAtIndexPath:,但当我在运行时选择一行时,该方法没有被调用。表格视图正在被填充,所以我知道控制器中的其他tableView方法正在被调用。
有没有人知道我到底搞砸了什么才让这一切发生的?
我正在编写一个带有tab视图中的表视图的iOS应用程序。在我的UITableViewController中,我实现了-tableView:didSelectRowAtIndexPath:,但当我在运行时选择一行时,该方法没有被调用。表格视图正在被填充,所以我知道控制器中的其他tableView方法正在被调用。
有没有人知道我到底搞砸了什么才让这一切发生的?
当前回答
记住在viewDidLoad方法中设置数据源和委托,如下所示:
[self.tableView setDelegate:self];
[self.tableView setDataSource:self];
其他回答
我知道是旧的,问题已经解决了,但有类似的问题,我认为问题是与我的自定义UITableViewCell,但解决方案是完全不同的-我重新启动XCode:),然后工作正常!就像Windows一样:)
你必须检查这个 选择必须是单一选择,编辑必须是在编辑过程中没有选择 你也可以改变uttableviewcell属性中的设置 在表格视图单元格中编辑 样式必须是自定义的,标识符必须是Rid section为none
我间歇性地有这个问题。有时触摸一个单元格会导致它被选中。有时它不会接收touch事件。
我使用的是ios8中引入的一个叫做自调整单元格的功能。我看到一篇博客文章指出:
当表视图第一次显示时,您可能会发现其中的一些单元格 尺寸不合适。但当你滚动表格视图时,新的 显示的单元格具有正确的行高。为了解决这个问题, 你可以在视图出现后强制重载:
override func viewDidAppear(animated: Bool) {
tableView.reloadData()
}
这为我解决了问题。即使表视图正确呈现,触摸处理(特别是UITableView的hitTest)似乎受到上述错误的影响。
我重复了之前所有的答案,但没有一个对我有帮助。经过反复试验,我找到了一个不同的解决方案。我有一个UIImageView覆盖整个单元格(作为背景)。默认情况下,UIImageView禁用用户交互。通过启用imageviews用户交互委托方法-didSelectRowAtIndexPath:再次被调用。 如。
cell.imgView.userInteractionEnabled = YES;
如果你在UITableView上添加了一个gestureRecognizer, didSelectRowAtIndexPath将不会被调用。
你需要使用gestureRecognizer委托方法来避免特定视图中的触摸。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isDescendantOfView:YourTable]) {
return NO;
}
return YES;
}