通过单击 UICollectionCell 上的按钮执行 segue
Posted
技术标签:
【中文标题】通过单击 UICollectionCell 上的按钮执行 segue【英文标题】:Perform segue with clicked on a button on UICollectionCell 【发布时间】:2013-07-02 13:47:47 【问题描述】:我想从 UICollectionView 中的 UICollectionViewCell 执行序列。有一个 UIIMage 是 UICollectionView 的子视图。有一个按钮是 UICollectionViewCell 的对等视图。我已经使用 UIIMage 顶部的透明按钮的工作区来捕获此单元格上的触摸事件。现在,当用户在集合单元格上单击此图像时,我想执行一个 segue。问题是我不知道哪个单元格的按钮触发了 segue 并处理它以准备 segue。
该按钮触发一个 IBAction,其中发送者是该按钮。我怎么知道这个透明按钮下面的 UICollectionCell 是哪个单元格?
【问题讨论】:
【参考方案1】:为您的按钮添加标签并根据标签执行不同的转场。另一种方法 - 没有按钮是向你的 UIImages 添加点击手势并根据点击的图像执行 segues ...
【讨论】:
我不想做不同的转场,但是相同的转场却将转场的发件人更改为按钮的包含单元格。如何引用包含此按钮的 UICollectionViewCell ?这会是 sender.superView 吗? 找到解决办法:我们需要使用 -(void)buttonPressed:(id)sender UITableViewCell *clickedCell = (UITableViewCell *)[[sender superview] superview]; NSIndexPath *clickedButtonPath = [self.tableView indexPathForCell:clickedCell]; ... 【参考方案2】:找到解决方案:它类似于为 tableview 解决的解决方案(当然,鉴于 UICollectionView 是重新打包的表格视图)发布here。
解决办法是用
-(void)buttonPressed:(id)sender
UITableViewCell *clickedCell = (UITableViewCell *)[[sender superview] superview];
NSIndexPath *clickedButtonPath = [self.tableView indexPathForCell:clickedCell];
...
【讨论】:
以上是关于通过单击 UICollectionCell 上的按钮执行 segue的主要内容,如果未能解决你的问题,请参考以下文章
更改自定义 UICollectionCell 中标签的边框宽度
如何停止使用渐变 UICollectionCell 创建新图层?覆盖 func prepareForReuse()
带有 UICollectionViewDelegateFlowLayout 的 UIcollectioncell 在添加约束后不应用高度和宽度