如何增加 UItableviewcell 内的 UItableview 高度?

Posted

技术标签:

【中文标题】如何增加 UItableviewcell 内的 UItableview 高度?【英文标题】:How to do increase UItableview height inside UItableviewcell? 【发布时间】:2019-04-18 13:55:44 【问题描述】:

我只是在UItableviewcell 中创建UITableview(第二个UITableview)。我需要根据单元格的第二个 UITableview 数量增加 UItableviewcell 高度(第二个 UITableview's 单元格的高度不同)。

第一个表视图:

extension ViewController:UITableViewDelegate, UITableViewDataSource
   // no of row #1
   func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
      let cell = tableView.dequeueReusableCell(withIdentifier: "OrderTimelineCell", for: indexPath) as! OrderTimelineCell
      return cell;
   

第一个表格视图单元格:

override func awakeFromNib() 
   tableView.layoutIfNeeded()
   tableView.heightAnchor.constraint(equalToConstant: tableView.contentSize.height).isActive = true //always return 44*#cells

extension OrderTimelineCell:UITableViewDelegate, UITableViewDataSource
   func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
      let cell = tableView.dequeueReusableCell(withIdentifier: "TimelineTableViewCell", for: indexPath) as! TimelineTableViewCell
      cell.label.text = array[indexpath.row] // text height different
      return cell
   

我希望输出显示第二个UITableview 在第一个UITableview 单元格内的所有单元格。

但实际输出是单元格高度 == #no of cell * 44

【问题讨论】:

【参考方案1】:

你需要在这个方法中指定高度:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 
    if indexPath.row == indexOfExtendedCell 
         return 100 // or another height
    
    return 44

【讨论】:

不想静态指定(返回 100)。因为,动态文本进入 Cell 您必须通过此方法指定它。每次更改单元格的子视图都需要在此处计算高度和更新高度。这并不可怕。

以上是关于如何增加 UItableviewcell 内的 UItableview 高度?的主要内容,如果未能解决你的问题,请参考以下文章

如何重新加载 uitableviewcell 内的集合视图

如何添加约束以右对齐 UITableViewCell 内的图像

如何动态调整 UITableViewCell 内的两个文本标签宽度?

转换到横向后如何更新 UITableViewCell 内的 UICollectionView

如何以编程方式快速向 UITableViewCell 内的 UIStackView 添加约束?

如何使用 Swift 从 UITableViewCell 内的 NIB 调整自定义 UIView 的大小?