UITableView didSelectRowAtIndexPath从不调用

我有UITableView里面的UIViewController采用UITableViewDelegateUITableViewDataSource协议。 numberOfRowsInSectioncellForRowAtIndexPath被实现。

故事板中有数据源和代表的出口。 TableViewselect单一select。 检查触摸时显示select。

我在模拟器上运行项目,触摸表单元格,得到了didHighlightRowAtIndexPath调用,但didSelectRowAtIndexPathwillSelectRowAtIndexPath永远不会被调用。

我忘了什么 什么可以影响TableView这种方式?

PS我知道,有这样的问题很多,但我已经花了几个小时的谷歌search和阅读stackoverflow,仍然没有解决我的问题。

TestViewController.h:

@interface TestViewController : ViewController <UITableViewDelegate, UITableViewDataSource>

@end

TestViewController.m:

 @interface TestViewController () @property (strong) IBOutlet UITableView *tableView; @end @implementation TestViewController - (void)viewDidLoad { [super viewDidLoad]; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"selected"); } - (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"highlighted"); } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 2; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 10; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"FilterCell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; cell.textLabel.text = @"some text"; return cell; } @end 

很难说没有看到代码,但试试这个:

1) didSelectRowAtIndexPath是从UITableViewDelegate ,而不是dataSource ,你有它连接?

2)仔细检查didSelectRowAtIndexPath的签名。 复制粘贴从一些值得信赖的来源。 也许有一些错误的地方。

3)确保sockets连接正确。 用debugging器停下来,说viewDidLoad和打印dataSource&委托( po self.tableView.dataSourcedebugging器命令),确保他们指向正确的对象。

4)该行是否被视觉select? 也许你有代码或故事板中的cell.userInteractionEnabled设置为NO?

5)表格视图在故事板中有一个select属性:(可以吗?) 在这里输入图像说明

6)也许你有编辑模式表? logging它从debugging看。

7)是否从indexPathsForSelectedRows方法的angular度select行? 如果您覆盖并logging对单元格selected访问者的调用,该怎么办?

我懂了。 问题出现在项目使用的库中。

我的ViewController是从一个库的ViewController实现inheritance的,它捕获所有的手势。