我有 Tableview 用于显示客户下的食品订单。其中包含水平 UIStackview
。在 UIStackView
UIStackview
中很少有一/两行标签和一个用于显示订单项的UITableView
。内 TableView 具有固定的高度常量(大于或等于 + 750 优先级)并且将是
随内容大小而变化。高度和滚动禁用。
内 TableView 有两个标签。而heigh是自动维度
我希望主 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()
}
}
问题:当我滚动主 TableView 时,它没有根据子项正确调整大小。而最初它显示正确。
我几乎已经尝试过像 layoutIfNeeded 这样的一切。布局 subview 。设置需要显示。
我也实现了 willDisplayCell 但没有成功。
我认为问题出在我重新加载内部 TableView 时。当它完成重新加载时,我如何通知主 tableview 以及如何更新内部 tableview 的高度常量
如果有人需要更多信息,请告诉我。
我感谢任何帮助或建议
最佳答案
在 main 和 inner tableViews 的 cellForRowAt 结束之前添加这两行
cell.layoutSubviews()
cell.layoutIfNeeded()
return cell
您也可以尝试在主单元格子类中添加 layoutSubviews 方法并执行此操作
self.tblOrderMaster.layoutIfNeeded()
并在主 tableView 的 Controller 的 viewDidLayoutSubviews 中执行此操作
self.tblOrders.layoutIfNeeded()
关于ios - TableView 自动维度 Tableview Inside Tableview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48031969/