我有Tableview用于显示客户提供的食品订单.其中包含Horizontal 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()