2014-08-31 69 views
0

在我的表格视图中,每个单元格都包含一个比单元格更小的UIView。我只想在用户点击这个UIView时执行一个细节视图的细节,而不是如果他按下了UIView之外的细胞。我试图给UIView添加一个手势识别器,但是当调用关联的方法时,它不知道哪个单元被按下了。我能做什么 ?桌面视图UIView上的手势识别器

回答

0

您可以以独特的方式为每个视图分配标签属性(整数)。例如,它可以是整数,它是段和行的组合。 或来自表格数据源的单元格的某些唯一ID。

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

0

在您的单元格子类中创建一个委托协议(和一个委托属性以匹配),该单元具有像'cellWasSelected:(MYCell *)单元'这样的一些方法。在cellForRowAtIndexPath中返回单元格时,请将ViewController设置为单元的代表。在单元格子类中,添加您想要确定何时点击的机制。手势很好。调用你的委托方法传递self作为参数。在你的ViewController中,你可以调用tableview indexOfCell(或者类似的东西,不能记住我头顶的名字)来获得你需要的索引路径。然后,手动执行你的搜寻。你可以存储一个“选中的单元格”,或者使用tableView手动选择那个单元格,如果已经设置好了,它应该触发你的segue。

0

您应该为您的CELL添加一个委托。你能做什么,你知道,你可以在你的自定义单元格让你UIView的参考,像这样:

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

,并添加手势识别它。

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

-(void)didTapViewAtCell:(MyCustomCell*)cell 

有一个delegate是遵守此协议,并呼吁它在你的手势识别目标的方法。类似...

[self.delegate didTapViewAtCell:self]; 

在您的UITableViewController中实现此协议并实现此方法。我认为这是继续下去的最好方法。 :)

+0

Thx对于您的回应,但我对协议不是很熟悉,您能否解释一下如何创建一个协议,以及您的意思是“拥有一个遵守此协议的代表”?谢谢 – Coconuts 2014-09-03 13:15:31

+0

https://developer.apple.com/library/ios/documentation/general/conceptual/CocoaEncyclopedia/DelegatesandDataSources/DelegatesandDataSources.html 请先阅读本文。 :) – avismara 2014-09-03 13:29:56

+0

好吧,我读过它,但我不确定要很好理解,我还是不明白如何创建一个协议,并有一个坚持它的代表... – Coconuts 2014-09-03 15:55:27