在表视图单元格中的UIView上的手势识别器

时间:2014-08-31 17:28:12

标签: ios xcode uitableview uiview uigesturerecognizer

在我的表格视图中,每个单元格都包含一个小于单元格的UIView。我想只在用户点击这个UIView时才执行一个细节视图,而不是按下UIView外的单元格。我试图向UIView添加一个手势识别器,但是当调用相关方法时,它并不知道哪个单元被按下了。我该怎么办?

3 个答案:

答案 0 :(得分:0)

您可以以唯一方式为每个视图指定标记属性(整数)。例如,它可以是整数,即截面和行的组合。 或者来自表数据源的单元格的一些唯一ID对象。

然后在识别器中,您可以分析标签值。

答案 1 :(得分:0)

在您的单元子类中创建一个委托协议(以及要匹配的委托属性),该子类具有某些方法,例如< cellWasSelected:(MYCell *)cell'。当您在cellForRowAtIndexPath:中返回单元格时,将ViewController设置为单元格的委托。在单元子类中,添加要在敲击时确定的任何机制。手势很好。调用你的委托方法传递self作为参数。在你的ViewController中,你可以调用tableview indexOfCell(或类似的东西,不记得我头顶的名字)来获取你需要它的索引路径。然后,手动执行您的segue。您可以存储选定的单元格'甚至可以使用tableView手动选择该单元格,如果已经设置了,则应该触发你的segue。

答案 2 :(得分:0)

您应该向CELL添加委托。您可以做什么,您知道,您可以在自定义单元格中获得UIView的引用,如下所示:

@property (nonatomic,weak) IBOutlet UIView *tappableView;

并为其添加手势识别器。

现在,创建一个协议并创建一个方法,

-(void)didTapViewAtCell:(MyCustomCell*)cell

拥有符合此协议的delegate,并在您的手势识别器的目标方法中调用它。有点像...

[self.delegate didTapViewAtCell:self];

UITableViewController中实施此协议并实施此方法。我认为这是继续下去的最佳方式。 :)