UITableView didSelectRowAtIndexPath从不调用
我有UITableView
里面的UIViewController
采用UITableViewDelegate
& UITableViewDataSource
协议。 numberOfRowsInSection
和cellForRowAtIndexPath
被实现。
故事板中有数据源和代表的出口。 TableViewselect单一select。 检查触摸时显示select。
我在模拟器上运行项目,触摸表单元格,得到了didHighlightRowAtIndexPath
调用,但didSelectRowAtIndexPath
或willSelectRowAtIndexPath
永远不会被调用。
我忘了什么 什么可以影响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.dataSource
debugging器命令),确保他们指向正确的对象。
4)该行是否被视觉select? 也许你有代码或故事板中的cell.userInteractionEnabled
设置为NO?
5)表格视图在故事板中有一个select属性:(可以吗?)
6)也许你有编辑模式表? logging它从debugging看。
7)是否从indexPathsForSelectedRows
方法的angular度select行? 如果您覆盖并logging对单元格selected
访问者的调用,该怎么办?
我懂了。 问题出现在项目使用的库中。
我的ViewController是从一个库的ViewController实现inheritance的,它捕获所有的手势。