ios – TableView自动维度Tableview内部Tableview

我有Tableview用于显示客户提供的食品订单.其中包含Horizo​​ntal UIStackview.在UIStackView中

在UIStackview中几乎没有一个/两个内衬标签和一个UITableView用于显示orderItems.内部tableview具有固定的高度常数(大于或等于750优先级)并且将是
随内容大小而变化.高度和滚动禁用.

内部tableview有两个标签.和高度是自动Dimension

我希望主tableview单元格高度应该根据内部tableview项自动增加.所以我申请主要的tableview

    self.tblOrders.rowHeight = UITableViewAutomaticDimension
    self.tblOrders.estimatedRowHeight = 45

并在tableview单元子类中

override func awakeFromNib() {
    super.awakeFromNib()
    self.tblOrderMaster.dataSource = self
    self.tblOrderMaster.delegate = self

    self.tblOrderMaster.estimatedRowHeight = 45
    self.tblOrderMaster.rowHeight = UITableViewAutomaticDimension
    self.selectionStyle = .none
    self.layoutIfNeeded()

    self.tblOrderMaster.isScrollEnabled = false

}

内部tableview数据源数组

var orderData:[ODOrderDataMaster] = [] {
        didSet {
            self.tblOrderMaster.reloadData()
            self.layoutIfNeeded()
            self.const_Height_tblOrderMaster.constant = self.tblOrderMaster.contentSize.height
            self.layoutIfNeeded()

        }
    }

问题:当我滚动主表视图时,它没有根据子项正确调整大小.最初它显示正确.

我几乎尝试过像layoutIfNeeded这样的东西. layoutSubviews. setNeedsDisplay.

我也实现了willDisplayCell但没有成功.

我认为问题是当我重新加载内部tableview时.当它完成重新加载时如何通知主表视图以及如何更新内部tableview的高度常量

如果有人需要更多信息,请告诉我.

我感谢任何帮助或建议

最佳答案 在main&中的cellForRowAt结尾之前添加这两行.内部tableViews

  cell.layoutSubviews()

  cell.layoutIfNeeded()

  return cell

您也可以尝试在主单元子类中添加layoutSubviews方法并执行此操作

  self.tblOrderMaster.layoutIfNeeded()

并在主tableView的控制器的viewDidLayoutSubviews中执行此操作

  self.tblOrders.layoutIfNeeded()
点赞