集合视图单元格内的表视图?

Posted

技术标签:

【中文标题】集合视图单元格内的表视图?【英文标题】:Table views inside collection view cells? 【发布时间】:2017-12-29 23:59:04 【问题描述】:

问题

我正在尝试在卡片视图控制器中使用集合视图。当用户点击卡片时,它会展开。在任何时候,我在每张卡片中都有一个 tableview,无论它是否扩展。我在表格视图中加载了数据,但只有当我点击卡片以展开它或者我将集合视图卡片滚动到屏幕外并返回屏幕时。将表格视图放在每个集合视图单元格中的更简洁的工作流程是什么?

这是在我的主视图控制器中:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "productionBinderCell", for: indexPath) as? ProductionBinderCollectionViewCell

    let suck = cell?.detailsTableView.cellForRow(at: IndexPath(row: 0, section: 0)) as? DescriptionTableViewCell

    suck?.descriptionText.text = productions[indexPath.row].productionDescription

    cell?.detailsTableView.reloadData()

    cell?.layer.shouldRasterize = true
    cell?.layer.rasterizationScale = UIScreen.main.scale

    let title = productions[indexPath.row].productionTitle

    let luck = productions[indexPath.row].productionImage

    let zuck = UIImage(data:luck!)

    cell?.productionTitle.text = title

    cell?.productionFeaturedImage.image = zuck

    cell?.productionColorTint.tintColor = UIColor.blue

    let backbtn = cell?.viewWithTag(1)

    backbtn?.isHidden = true

    return cell!

这是在 tableview 的子类中:

override func layoutSubviews() 
    super.layoutSubviews()
    self.dataSource = self
    self.delegate = self


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCell(withIdentifier: "productionDescription", for: indexPath) as? DescriptionTableViewCell
    return cell!

这是我关注的 tableview 单元格的子类。它仅在屏幕外滚动或点击集合视图单元格时显示 uilabel 文本:

class DescriptionTableViewCell: UITableViewCell 

@IBOutlet var descriptionText: UILabel!

override func awakeFromNib() 
    super.awakeFromNib()
    

override func setSelected(_ selected: Bool, animated: Bool) 
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
    


也许我根本不应该使用 tableview?非常感谢所有提供帮助的人。我非常乐于接受批评,喜欢从错误中吸取教训(有点太频繁了)。 :)

【问题讨论】:

集合视图是水平的吗??? 是的,它水平滚动 【参考方案1】:

首先,您需要明确定义视图和单元格。

UICollectionview 是 UICollectionViewCell 对象的集合 UITableView 是 UITableViewCell 对象的集合

您需要在每张卡片中嵌入整个表格视图吗?你有你的答案。您的 UICollectionViewCell 和 UITableView 派生类之间存在父子关系:

从 UICollectionViewCell 派生 - MyCollectionViewCell - 此步骤是强制性的。 在 MyCollectionViewCell 的 xib 中,插入一个表格视图,并启用水平滚动。 (这是 xib 属性编辑器中的一个选项) 如果需要自定义,也可以从 UITableViewCell - MyTableViewCell 派生。此步骤是可选的。 在 MyCollectionViewCell 类文件中,实现了表视图数据源和委托方法。这样一来,每张卡片都会将其所有表格视图单元格子项放在一个位置 如果存在,请在 MyTableViewCell 类文件中定义自定义逻辑 这里不需要继承 UITableView。需要自定义的所有内容都可以使用子类化单元格来完成。

【讨论】:

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

如何在表格视图单元格内创建集合视图

在表格视图中的所有单元格都已加载后,重新加载表格视图单元格内的集合视图

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

一次从所有集合视图单元格内的文本视图中获取文本

如何隐藏集合视图单元格内的uiview

集合视图单元格的自动布局行为怪异