我有嵌入到UITableView中的UICollectionview。 现在我想在用户单击单元格时对新的ViewController进行选择
导入UIKit
class productsTableViewCell:UITableViewCell,UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout {
| wc -l
}
我无法对新的视图控制器执行segue 请帮我。 谢谢
答案 0 :(得分:1)
您不能在performSegue()
子类中使用UITableViewCell
,因为此方法仅在UIViewController
s中可用。
您的问题有一个简单的解决方案-您可以在单元格中添加“回调”,然后在视图控制器中填充此回调。
您的单元格:
class ProductsTableViewCell: UITableViewCell {
var didSelectItemAction: ((IndexPath) -> Void)?
//...
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
didSelectItemAction?(indexPath)
}
}
视图控制器中的代码:
class ViewController: UITableViewController {
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "identifier", for: indexPath)
guard let productsCell = cell as? ProductsTableViewCell else {
return cell
}
productsCell.didSelectItemAction = { [weak self] indexPath in
self?.performSegue(withIdentifier: "yourID", sender: self)
}
return productsCell
}
}
答案 1 :(得分:0)
如果您从上面给出的代码中收到警告,则可以执行以下操作:
let Tablecell = MyTableview.dequeueReusableCell(withIdentifier: MyCellID, for: indexPath) as! MyTableViewCell
Tablecell.configureCell() // this is function which setups my collection view
let collectionCell = Tablecell
collectionCell.didSelectItemAction = { [weak self] indexPath in
self?.performSegue(withIdentifier: "SegueID", sender: self)
}
return collectionCell
}