我有一个类型为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)
}
}