我有一个swift文件,它是一个类类型UICollectionViewCell,我有一个按钮,我想将它称为另一个视图,它是一个集合视图控制器。我该怎么做呢?
我正在尝试这样做,但我无法完成此函数
func handleStartButtonClick(){
let layout = UICollectionViewFlowLayout()
let mainViewController = MainViewController(collectionViewLayout: layout)
}
发布于 2018-12-07 07:11:26
您应该声明一个委托协议,并且您的控制器应该符合该协议。然后你在你的单元格中声明一个委托的变量,在cellforitemat函数中,你可以这样做:在你的CollectionViewCell swift文件中,在你的类之外声明一个协议:
protocol MyCollectionViewCellDelegate {
func someThingThatMyControllerShouldDo()
}
class MyCollectionViewCell: UICollectionViewCell {
}
然后在你的CollectionViewCell类中:
var delegate: MyCollectionViewCellDelegate?
在控制器的cellForItemAt函数中,您可以将此变量的值初始化为您的控制器:
cell.delegate = self
然后在你的CollectionViewCell中,当你想让你的控制器做一些事情的时候,你只需要调用你的委托的函数:
self.delegate?.someFunctionDeclaredInDelegate()
当然,您的ViewController必须符合此协议,这意味着它应该实现这些协议的方法:
extension MyViewController: MyCollectionViewDelegate {
func someThingThatMyControllerShouldDo() {
self.performSegue(withIdentifier: "ShowMySecondController", sender: nil)
}
}
https://stackoverflow.com/questions/53660976
复制相似问题