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

Posted

技术标签:

【中文标题】如何使用 Swift 在集合视图单元格中添加表视图?【英文标题】:How do i add a Table View inside a UICollection View Cell Using Swift? 【发布时间】:2015-06-03 22:50:01 【问题描述】:

如何在 UICollectionViewCell 中添加表格视图?我不确定真的要开始。如何获取表视图数据源并委派出去?这是我已经尝试过的......

我试过谷歌搜索它,但我得到的只是如何在表格视图中添加集合视图,而不是相反。

 import UIKit

    class GeneralAisleViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UITableViewDataSource, UITableViewDelegate 

        @IBOutlet weak var collectionView: UICollectionView!


        var tableView:UITableView = UITableView()

        var CollectionViewArray = ["1", "2", "3"]

var tableView1Array = ["1", "2"]
        var tableView2Array = ["1", "2"]
var tableView3Array = ["1", "2"]


        override func viewDidLoad() 
            super.viewDidLoad()

            // Do any additional setup after loading the view.


            self.collectionView.delegate = self
            self.collectionView.dataSource = self

            self.tableView.delegate = self
            self.tableView.dataSource = self

        

        override func didReceiveMemoryWarning() 
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        


        func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
            return CollectionViewArray.count
        


        func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell 

            let cell:UICollectionViewCell = self.collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! UICollectionViewCell


            let dataToDisplay:String = CollectionViewArray[indexPath.row]

            let dataLabel:UILabel = cell.viewWithTag(1) as! UILabel




            dataLabel.text = dataToDisplay


            let TableView = cell.viewWithTag(2) as! UITableView

            self.tableView = TableView




            return cell
        

【问题讨论】:

【参考方案1】:

在aUICollectionView(Cell) 中添加aUITableView 反之亦然。

您只需要清楚谁是UITableView's 委托和数据源。根据您的代码,它是GeneralAisleViewController

那么你需要做的就是将UITableView添加到单元格的子视图中,比如:

代码:

...
let TableView = cell.viewWithTag(2) as! UITableView
self.tableView = TableView
cell.addSubview(TableView)
return cell

然后表格视图将从其数据源中获取表格视图单元格。

然而,事情从来都没有看起来那么简单。 UITableViewUICollectionView 都为他们的单元共享reuse 技术,所以每次你从队列中得到一个单元时,它们都会被重用,而不是创建,所以你需要非常小心地处理它们。细胞。

在将其他属性或视图分配到单元格之前,最好使用prepareReuse 清理单元格的子视图。

【讨论】:

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

如何在 swift 3 中的 tableview 单元格中添加带有自定义视图的 collectionView?

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

如何在 swift 4 中的另一个表视图控制器中获取该表视图单元格中的文本字段文本?

以编程方式创建形状视图并在集合视图单元格上使用

在集合单元格中添加背景视图

如何在swift中的动态表视图中创建动态表视图?