永远不会调用UITableView didSelectRowAtIndexPath

ab.*_*lly 0 objective-c selection uitableview ios

我有一个采用&协议的UITableView内部.并实施.UIViewControllerUITableViewDelegateUITableViewDataSourcenumberOfRowsInSectioncellForRowAtIndexPath

在故事板中有dataSource和delegate的出口.为TableView选择单一选择.选中触摸显示选择.

我在模拟器上,触摸表格单元运行项目,得到了didHighlightRowAtIndexPath电话,但 didSelectRowAtIndexPath还是willSelectRowAtIndexPath从来不被称为.

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

PS我知道,有很多这样的问题,但我花了几个小时谷歌搜索和阅读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
Run Code Online (Sandbox Code Playgroud)

Ser*_*nko 14

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

1)didSelectRowAtIndexPath来自UITableViewDelegate,不是dataSource,你有连接吗?!

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

3)确保插座连接正确.使用调试器停止它,比如说viewDidLoad打印dataSource&delegate(po self.tableView.dataSource调试器命令),确保它们指向正确的对象.

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

5)表视图在故事板中有一个选择属性:(可以吗?) 在此输入图像描述

6)也许你有编辑模式的表?从调试中记录它以查看.

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