UITableView didSelectRowAtIndexPath n'a jamais été appelé

J'ai un UITableView intérieur d'un UIViewController qui adopte les protocoles UITableViewDelegate et UITableViewDataSource . numberOfRowsInSection et cellForRowAtIndexPath sont implémentés.

Il existe des points de vente pour dataSource & delegate dans le storyboard. La sélection unique est choisie pour TableView. Afficher la sélection au toucher est cochée.

Je cours le projet sur le simulateur, touche la cellule de table, ai didHighlightRowAtIndexPath appel de didHighlightRowAtIndexPath , mais didSelectRowAtIndexPath ou willSelectRowAtIndexPath ne sont jamais appelés.

Qu'ai-je oublié? Qu'est-ce qui peut affecter TableView de cette façon?

PS Je sais, il y a beaucoup de questions comme celle-ci, mais j'ai passé quelques heures à googler et à lire stackoverflow et je n'ai toujours pas résolu mon problème.

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 NSSsortingng *CellIdentifier = @"FilterCell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; cell.textLabel.text = @"some text"; return cell; } @end 

Difficile à dire sans voir de code, mais essayez ceci:

1) Le didSelectRowAtIndexPath provient de UITableViewDelegate , PAS dataSource , l'avez-vous connecté ?!

2) Vérifiez soigneusement la signature de didSelectRowAtIndexPath . Copiez-le à partir d'une source fiable. Peut-être que certains malentendus là.

3) Assurez-vous que les sockets sont correctement connectées. Arrêtez-le quelque part avec un débogueur, dites viewDidLoad et print dataSource & delegate (command de debugging po self.tableView.dataSource ), assurez-vous qu'ils pointent vers l'object correct.

4) Est-ce que la ligne est sélectionnée visuellement? Peut-être que cell.userInteractionEnabled défini sur NO dans le code ou le storyboard?

5) La vue Table a une propriété de sélection dans le storyboard: (ça va?) entrez la description de l'image ici

6) Peut-être que vous avez une table en mode d'édition? Connectez-le à partir de déboguer pour voir.

7) La ligne est-elle sélectionnée du sharepoint vue de la méthode indexPathsForSelectedRows ? Que faire si vous annulez et consignez les appels à l'accesseur selected la cellule?

J'ai compris. Le problème était dans une bibliothèque utilisée par le projet.

Mon ViewController a été hérité de l'implémentation ViewController d'une bibliothèque et il attrapait tous les gestes.