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

Posted

技术标签:

【中文标题】查找哪个集合视图单元格链接到我的表格视图【英文标题】:Find which collection view cell is linked to my table view 【发布时间】:2019-12-29 23:30:19 【问题描述】:

我正在为我在表格视图和集合视图之间的关联寻求您的帮助。

我有一个包含 6 个水平滚动单元格的 CollectionView。 在每个单元格中,我想放置一个表格视图。

对于每个 tableView,我需要知道将我想要的数据放在哪个单元格中。

实际上,我让我的代码可以在单元格内显示 tableView,但我无法找到我所在的集合视图单元格。

顺便说一句,我的 Meal_vc_cell 控制器实际上是空的,它只有一个简单的插座。没有别的了。

这是我的代码

class TrainFoodPlanViewController: BaseViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout, UITableViewDataSource, UITableViewDelegate 

    let train_meals_list: [String] = ["breakfast", "snack_1", "pre_intra_post", "lunch", "snack_2", "diner"]

    @IBOutlet weak var trainCollectionView: UICollectionView!


    override func viewDidLoad() 
        super.viewDidLoad()

        self.title = "Food Plan"
    

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
        return 1
    

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
        return UITableViewCell()
    

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

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "collection_cell", for: indexPath) as! Meal_vc_cell

        cell.meal_number.text = train_meals_list[indexPath.row]

        return cell
    

这就是我想要做的

【问题讨论】:

collection view cell应该是tableview数据源;您将适当的数组分配给集合视图的属性 您可以为单元格的 contentView 提供一个与其在 collectionView 中的位置相关联的标签(cell.contentView.tag = indexPath.row),并将该标签提供给单元格内的 tableView(tableView.tag = cell.contentView.tag)。然后在您的 tableView 的委托中使用该标签来知道它与哪个 collectionViewCell 相关联(switch tableView.tag ... . 【参考方案1】:

有多种方法可以实现这一目标。我的建议是继承UITableView 并添加parentCollectionViewIndexPath 属性

class MyCustomTableView: UITableView 
    var parentCollectionViewIndexPath: IndexPath?

我假设 Meal_vc_cell 有一个到相关 tableView 的出口。将 tableView 的类型更改为 MyCustomTableView

class Meal_vc_cell: UITableViewCell 
    @IBOutlet weak var tableView: MyCustomTableView

注意: 如果你使用storyboard,别忘了更新storyboard中tableView的类

现在,只需在 collectionView 的 cellForItemAt 方法中设置 parentCollectionViewIndexPath

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "collection_cell", for: indexPath) as! Meal_vc_cell
    cell.tableView.parentCollectionViewIndexPath = indexPath
    return cell

【讨论】:

以上是关于查找哪个集合视图单元格链接到我的表格视图的主要内容,如果未能解决你的问题,请参考以下文章

我的嵌入表格视图控制器的单元格没有显示[关闭]

将数据从集合视图单元格内的表视图单元格传输到另一个集合视图单元格 [带图片!]

自动大小表格视图单元格扩展高度中的嵌套水平集合视图使集合视图滚动重置当重新加载单元格以累积行

是否可以快速显示表格视图单元格索引路径和集合视图索引路径?

单元格未填充在表格内的第二个集合视图中

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