Что вам нужно сделать, это добавить свойство в классе вашей ячейки с именем parentVC
или что-то подобное:
class CustomCell: UICollectionViewCell {
var parentVC: UIViewController!
...
}
Затем, в любом контроллере представления используется ячейка представления сбора, вам нужноустановите parentVC
в методе collectionView:, cellForItemAt indexPath:
:
class SomeViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CustomCell", for: indexPath) as! CustomCell
cell.parentVC = self
...
return cell
}
}
Теперь ваша пользовательская ячейка может сказать своему родительскому контроллеру представления представить новый контроллер представления:
class CustomCell: UICollectionViewCell {
var parentVC: UIViewController!
@objc func moveRight() {
let vc = fullScreen()
//Tell the cell's parent VC to present the new VC. A UICollectionViewCell cannot present a view controller
parentVC.present(vc, animated: true)
}
}