在tableview中执行segue收集视图

时间:2019-09-30 07:57:17

标签: swift xcode uitableview uicollectionview segue

我有嵌入到UITableView中的UICollectionview。 现在我想在用户单击单元格时对新的ViewController进行选择

导入UIKit

class productsTableViewCell:UITableViewCell,UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout {

| wc -l

}

我无法对新的视图控制器执行segue 请帮我。 谢谢

2 个答案:

答案 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
        }