如何从集合视图单元格中调用CollectionViewController

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从集合视图单元格中调用CollectionViewController相关的知识,希望对你有一定的参考价值。

我有一个类型为UICollectionViewCell的swift文件,我有一个按钮,我想调用另一个是collectionviewcontroller的视图。我该怎么做呢?

我试图这样做,但我无法完成这个功能

func handleStartButtonClick(){
    let layout = UICollectionViewFlowLayout()
    let mainViewController = MainViewController(collectionViewLayout: layout)
}
答案

您应声明委托协议,并且您的控制器应符合该协议。然后在你的单元格和cellforitemat函数中声明该委托的变量,你可以这样做:在你的CollectionViewCell swift文件中,你的类声明了一个协议:

protocol MyCollectionViewCellDelegate {
    func someThingThatMyControllerShouldDo()
}

class MyCollectionViewCell: UICollectionViewCell {

}

然后在CollectionViewCell类中:

var delegate: MyCollectionViewCellDelegate?

在Controller的cellForItemAt函数中,您可以将此变量的值初始化为控制器:

cell.delegate = self

然后在您的CollectionViewCell中,当您希望控制器执行某些操作时,您只需调用代理的功能:

self.delegate?.someFunctionDeclaredInDelegate()

当然你的ViewController必须符合这个协议,这意味着它应该实现协议的那些方法:

extension MyViewController: MyCollectionViewDelegate {
    func someThingThatMyControllerShouldDo() {
        self.performSegue(withIdentifier: "ShowMySecondController", sender: nil)
    }
}

以上是关于如何从集合视图单元格中调用CollectionViewController的主要内容,如果未能解决你的问题,请参考以下文章

如何以不同的方法访问 uicollectionviewcell 对象?

如何从集合视图中的不可见单元格中删除自定义视图

如何根据带有自动调整大小的传入数据在集合视图单元格中添加随机内容(UIKit 元素)?

如何更改集合视图单元格中的图像视图

如何通过单击更改集合视图单元格中的标签颜色

使用协议从集合视图单元格中删除核心数据