查找哪个集合视图单元格链接到我的表格视图
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
【讨论】:
以上是关于查找哪个集合视图单元格链接到我的表格视图的主要内容,如果未能解决你的问题,请参考以下文章
将数据从集合视图单元格内的表视图单元格传输到另一个集合视图单元格 [带图片!]