Вы должны объявить протокол делегата, и ваш контроллер должен соответствовать этому протоколу.Затем вы объявляете переменную этого делегата в своей ячейке, и в функции cellforitemat вы делаете что-то вроде этого: в вашем swift-файле CollectionViewCell из вашего класса объявляется протокол:
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)
}
}