У меня есть следующая логика приложения
Контроллер TableView => Ячейка табличного представления => CollectionView встраивается в каждую ячейку табличного представления
Я хочу, когда я нажимаю на ячейку табличного представления, чтобы перейти кконтроллер представления таблицы к другому контроллеру.
Кто-нибудь знает, как это сделать?
Вот мой код:
В tableViewControler
let cell = tableView.dequeueReusableCell(withIdentifier: "book", for: indexPath) as! BookTableViewCell
let books = (indexPath.row == 2) ? trendingbooks : newbooks
if (cell.collectionView === nil) {
cell.addCollectionView();
}
performSegue(withIdentifier: "bookDetail", sender: indexPath)
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
let dc = segue.destination as! DetailViewController
dc.data = self.tableRowData;
}
В BookTableViewCell
func addCollectionView () {
let flowLayout = UICollectionViewFlowLayout()
flowLayout.scrollDirection = .horizontal
let cellWidth = UIScreen.main.bounds.width / 3
let cellHeight = UIScreen.main.bounds.height / 3
flowLayout.itemSize = CGSize(width: 100, height: self.frame.height)
//You can also provide estimated Height and Width
flowLayout.estimatedItemSize = CGSize(width: 100, height: self.frame.height)
//For Setting the Spacing between cells
flowLayout.minimumInteritemSpacing = 20
flowLayout.minimumLineSpacing = 20
let cellReuseIdentifier = "collectionCell"
self.collectionView = UICollectionView(frame: CGRect(x: 0,
y: 0,
width: self.frame.width,
height: self.frame.height),
collectionViewLayout: flowLayout)
self.collectionView.showsHorizontalScrollIndicator = false
self.collectionView.translatesAutoresizingMaskIntoConstraints = false
self.collectionView.backgroundColor = .clear
self.collectionView.delegate = self
self.collectionView.dataSource = self
self.collectionView.register(BookCollectionViewCell.self, forCellWithReuseIdentifier: cellReuseIdentifier)
self.addSubview(collectionView)
}