当前位置:  开发笔记 > IOS > 正文

UICollectionViewCell获得对其父UICollectionViewController的访问权限

如何解决《UICollectionViewCell获得对其父UICollectionViewController的访问权限》经验,为你挑选了1个好方法。

我遇到了一个UICollectionViewController问题,它将自定义UICollectionViewCell注册为标头.请参阅附图.

故事板截图

在中间的图中,是一个UICollectionViewController,红色方块突出显示UICmageView,它位于UICollectionViewCell内,注册为标题.我试图获得正确的图表的结果,这样当按下标题单元格的UIImageView时,带有信息列表的UIView从底部向上滑动.

这是我的代码到目前为止的结构:

1)包含信息列表的UIView swift文件.

2)实例化UIView并将其添加到我的UICollectionViewController中的子视图中.

由于UIImageView(信息圈图标)存在于UICollectionViewCell中,我将其设为userInteractionEnabled,并为其添加了TapGestureRecognizer.但是,因为我想从UICollectionViewController动画UIView,我不知道如何从我的UICollectionViewCell头文件访问UICollectionViewController中的UIView属性.

我知道这听起来真的很混乱,但如果有人能指出我正确的方向,或者可能建议重新构建我的代码,我会非常感激.如果您想了解更多信息,请与我们联系.非常感谢你的帮助.

编辑更新:非常感谢John的详细解释.乍一看,我认为该协议只适用于整个 UICollectionViewCell,但忽略了它是delegate?.clicked() Gesture Recognizer中限制范围的事实.非常感谢John的帮助.希望这可以帮助其他类似的问题.



1> anho..:

为了实现这一目标,你应该在UICollectionViewCell上实现一个协议,在那里你将告诉父节点单元格被点击以及应采取的操作如下:

protocol MyCellDelegate: class {
    func clicked()
    func other()
}

class MyCell: UIColletionViewCell  {
    weak var delegate : MyCellDelegate?

    //call delegate?.clicked() where you have the gesture recogniser 

}

然后在cellForItemAtIndexPath或您使用MyCell的任何地方编写以下内容

 cell.delegate = self

然后为您的类实现扩展:

 extension MyCollectionView: MyCellDelegate {
     func clicked() {
     //present the view here (the slide up)
     }
  }

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有