我一直在搜索这个问题的许多SO答案,并且没有找到有效的解决方案,所以我想我自己会问一个。
我有一个正常的UIViewController
,而且其中是UITableView
。我正确填充表视图,但方法
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(nonnull NSIndexPath *)indexPath
未被调用。我的数据源和委托都已正确链接,我启用了用户交互,并为选择设置设置了单选。
问题是否可以在视图控制器中嵌入UITableView
?我该如何解决这个问题?
答案 0 :(得分:3)
您是否使用过任何gestureRecognizer?如果是,请尝试此代码。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ((touch.view == tblObj))
{
return NO;
}
return YES;
}
答案 1 :(得分:0)
您是否设置了tableview委托和数据源?
self.tableView.delegate = self;
self.tableview.dataSource = self;
答案 2 :(得分:0)
从界面构建器中选择tableview
(即从视图控制器或故事板)。
然后从attribute inspector
,
utilities
现在确保以下设置,
Selection - Single Selection
Editing - No Selection during editing (if you are selecting row during editing then change it)
Show selection on touch checkbox should be checked
在view
下,
User Interaction Enable must be Checked.
然后选择您的tableview cell
确保,
User interaction enable is checked under `view`
然后选择单元格的内容视图并检查是否选中了用户违规启用。
第二件事是确保为rootview启用用户交互(即self.view),并且整个视图层次结构位于self.view和tableView之间。
并确保您已将datasource
和delegate
正确设置为自我,
self.myTableView.delegate = self;
self.myTableView.dataSource = self;
答案 3 :(得分:0)
所以事实证明我是一个白痴,并在我的自定义UITableViewCell中添加一行说
self.userInteractionEnabled = NO;
哎呀:/
感谢所有试图解决我的问题的人。