表格视图单元格中的集合视图

Posted

技术标签:

【中文标题】表格视图单元格中的集合视图【英文标题】:Collectionview in tableview cell 【发布时间】:2017-05-22 04:07:26 【问题描述】:

我现在在表格视图单元格中获取了集合视图,当我单击集合视图单元格时,它将转到下一个视图控制器,这可能吗?我已经尝试过 select item 方法,如何使用 perform segue 方法

【问题讨论】:

【参考方案1】:

我给你看例子

     class ViewController: UIViewController, UITableViewDelegate,
     UITableViewDataSource 
         @IBOutlet weak var tableView: UITableView!  
    override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool 
        return false
    
 

这个 ViewController 包含 Tableview 数据源 n 个委托。其 DemoTableViewCell 类型的单元格如下所示

    class DemoTableViewCell: UITableViewCell, UICollectionViewDataSource, UICollectionViewDelegate 
        var parentVC: UIViewController?

        @IBOutlet weak var collectionView: UICollectionView!
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
        return 10
    
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
        let demoCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "DemoCollectionViewCell", for: indexPath) as! DemoCollectionViewCell
        return demoCollectionViewCell
    

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
        (self.parentVC as! ViewController).performSegue(withIdentifier: "YourSegueName", sender: self)


    
    

DemoTableViewCell 再次包含数据源和集合视图的委托,如上所示 didSelectItemAt 还包含 performSegue,它使用 Segue 的父引用。

现在在集合视图单元格中,有 1 个名为 parentVC 的变量,你必须像这样在 ViewController 类中定义的 cellForRowatIndexpath 中设置这个值

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
       let demoTableViewCell = tableView.dequeueReusableCell(withIdentifier: "DemoTableViewCell", for: indexPath) as! DemoTableViewCell
        demoTableViewCell.parentVC = self
        demoTableViewCell.collectionView.reloadData()
        return demoTableViewCell
    

最后从情节提要上的 collectionViewCell 到 YourController 进行转场

【讨论】:

我需要在 tableview 单元格的第一部分中使用 collectionview 并且仍然没有 collectionviews ,当单击第二部分 tableview 单元格时它执行为 segue 做准备,现在我的问题是你写的应该执行是错误的,如果我们给false ,tableview 会为 segue 方法做准备吗? 在这种情况下,当您单击任何表格单元格时,您需要调用 performSegue 方法,例如 self.performSegue(withIdentifier: "your_segue_identifier", sender: self) 和 shouldPerformSegue 将保持返回 false。跨度> 感谢您的回答。我有一个类似的问题,我解决了它。我认为这个答案的关键部分是在 View 中设置var parentVC: UIViewController?,并通过demoTableViewCell.parentVC = selfcellForRowAt 设置该控制器。

以上是关于表格视图单元格中的集合视图的主要内容,如果未能解决你的问题,请参考以下文章

为啥两个表格视图单元格中的两个集合视图在 Swift 4 中不起作用?

如何通过单击更改集合视图单元格中的标签颜色

在表格视图单元格中添加集合视图 swift 3

查找哪个集合视图单元格链接到我的表格视图

在单个集合视图单元格内控制表视图

如何使用 Swift 在集合视图单元格中添加表视图?