I have a UITableView
as a subview of my UIScrollVIew
, which is the main view controlled by my MainViewController
.
In MainViewController.h
@interface MainViewController : UIViewController <UIGestureRecognizerDelegate, UITableViewDelegate, UITableViewDataSource> // other stuff here... @property (weak, nonatomic) IBOutlet UITableView *myTableView;
In MainViewController.m
@synthesize myTableView; // other stuff here... - (void)viewDidLoad { myTableView.delegate = self; myTableView.datasource = self; } // other stuff here... -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath { [self performSegueWithIdentifier:@"listAttributesSegue" sender:self]; }
I know that didSelectRowAtIndexPath
is not being called because I have set breakpoints on both the method itself and the line of code inside it, and neither is being called. I also know that the datasource is working correctly because I have other functions which modify the cells at runtime and they are working perfectly fine. I am using the latest Xcode with iOS 5.0 set as the development target. I have searched and searched for an answer. Anyone have any ideas?
Edit: I have found the answer. I had a UITapGestureRecognizer
set for myTableView's superView. This overrode the selection call. Credit to whoever suggested that that might be it. Your answer was deleted before I could mark it correct.
Edit 2: A lot of people have been commenting about this, so I though I would share it. If you are experiencing this problem, simply set myGestureRecognizer.cancelsTouchInView
to false
and everything should work fine.
tableView(_:didSelectRowAt:)Tells the delegate a row is selected.
A view that presents data using rows in a single column.
Methods for managing selections, configuring section headers and footers, deleting and reordering cells, and performing other actions in a table view.
I have found the answer. I had a UITapGestureRecognizer set for myTableView's superView. This overrode the selection call. Credit to whoever suggested that that might be it. Your answer was deleted before I could mark it correct.
Set the cancelsTouchesInView
property to NO
on the gesture recogniser to allow the table view to intercept the event.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With