在我的表格视图中,每个单元格都包含一个小于单元格的UIView。我想只在用户点击这个UIView时才执行一个细节视图,而不是按下UIView外的单元格。我试图向UIView添加一个手势识别器,但是当调用相关方法时,它并不知道哪个单元被按下了。我该怎么办?
答案 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
中实施此协议并实施此方法。我认为这是继续下去的最佳方式。 :)