The problem is that the tap gesture recognizer eats the taps intended for the table view. See didSelectRowAtIndexPath: not being called.
A gesture recognizer applies not only to the view to which it is attached (self.view
in your case) but also to all that view's subviews all the way down the view hierarchy. In this case, that includes everything, including your table view cells.
The solution is to mediate with a gesture recognizer delegate (iOS 5) or with UIView gestureRecognizerShouldBegin:
(iOS 6 only).