首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从集合视图单元格中调用CollectionViewController

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

Stack Overflow用户
提问于 2018-12-07 07:01:33
回答 1查看 424关注 0票数 0

我有一个swift文件,它是一个类类型UICollectionViewCell,我有一个按钮,我想将它称为另一个视图,它是一个集合视图控制器。我该怎么做呢?

我正在尝试这样做,但我无法完成此函数

代码语言:javascript
复制
func handleStartButtonClick(){
    let layout = UICollectionViewFlowLayout()
    let mainViewController = MainViewController(collectionViewLayout: layout)
}
EN

回答 1

Stack Overflow用户

发布于 2018-12-07 07:11:26

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

代码语言:javascript
复制
protocol MyCollectionViewCellDelegate {
    func someThingThatMyControllerShouldDo()
}

class MyCollectionViewCell: UICollectionViewCell {

}

然后在你的CollectionViewCell类中:

代码语言:javascript
复制
var delegate: MyCollectionViewCellDelegate?

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

代码语言:javascript
复制
cell.delegate = self

然后在你的CollectionViewCell中,当你想让你的控制器做一些事情的时候,你只需要调用你的委托的函数:

代码语言:javascript
复制
self.delegate?.someFunctionDeclaredInDelegate()

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

代码语言:javascript
复制
extension MyViewController: MyCollectionViewDelegate {
    func someThingThatMyControllerShouldDo() {
        self.performSegue(withIdentifier: "ShowMySecondController", sender: nil)
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53660976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档