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

问题描述 投票:0回答:1

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

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

func handleStartButtonClick(){
    let layout = UICollectionViewFlowLayout()
    let mainViewController = MainViewController(collectionViewLayout: layout)
}
ios swift uicollectionview
1个回答
0
投票

您应声明委托协议,并且您的控制器应符合该协议。然后在你的单元格和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)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.