通过单击 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 在添加约束后不应用高度和宽度

检测 iOS UICollectionCell 何时离开屏幕

按钮停止上的按下(波纹)动画

如何在 Flutter 测试中模拟 TextField 上的按 ENTER