Вы должны установить делегат или замыкание для класса ячейки, чтобы передать действие в viewcontroller
замыкание:
class myCell: UITableViewCell{
var closure: (() -> Void)?
, так как вы устанавливаете этот класс как источник данных и делегат для collectionView затем переписать эту функцию как
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
closure?()
}
, затем в viewController, где вы устанавливаете источник данных tableview, тогда,
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.deque ....
cell.closure = {_ in
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "ReadOrDownloadViewController") as! ReadOrDownloadViewController
navigationController.pushViewController(vc, animated: true)
для протокола то же самое, просто установите делегата в ячейке и вызовите функцию делегата в функции элемента didTap collectionView