永远不会调用UITableView didSelectRowAtIndexPath

时间:2013-11-16 15:24:36

标签: ios objective-c uitableview selection

UITableViewUIViewController UITableViewDelegate采用UITableViewDataSource& numberOfRowsInSection协议。已实施cellForRowAtIndexPathdidHighlightRowAtIndexPath

dataSource&在故事板中委派。为TableView选择单一选择。选中触摸显示选择。

我在模拟器上运行项目,触摸表格单元格,进行didSelectRowAtIndexPath调用,但永远不会调用willSelectRowAtIndexPath@interface TestViewController : ViewController <UITableViewDelegate, UITableViewDataSource>

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

P.S。我知道,有很多这样的问题,但我花了几个小时谷歌搜索和阅读stackoverflow仍然没有解决我的问题。

TestViewController.h:

@end

@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

TestViewController.m:

{{1}}

2 个答案:

答案 0 :(得分:14)

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

1)didSelectRowAtIndexPath来自UITableViewDelegate非dataSource ,您是否已将其连接?!

2)仔细检查didSelectRowAtIndexPath的签名。从一些可信来源复制粘贴它。也许有些错误。

3)确保插座连接正确。使用调试器将其停在某处,例如viewDidLoad并打印dataSource&amp;委托(po self.tableView.dataSource调试器命令),确保它们指向正确的对象。

4)是否可以直观地选择行?也许你在代码或故事板中将cell.userInteractionEnabled设置为NO?

5)表视图在storyboard中有一个选择属性:(可以吗?) enter image description here

6)也许您的表格处于编辑模式?从调试中记录下来以查看。

7)从indexPathsForSelectedRows方法的角度选择行吗?如果覆盖并记录对单元格的selected访问者的调用?

,该怎么办?

答案 1 :(得分:3)

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

我的ViewController继承自库的ViewController实现,它捕获了所有的手势。