【发布时间】:2017-12-30 07:35:57
【问题描述】:
我有 Tableview 用于显示客户下的食品订单。其中包含水平UIStackview。在UIStackView
在UIStackview 中很少有一个/两个内衬标签和一个UITableView 用于显示orderItems。内部表格视图具有固定的高度常数(大于或等于 + 750 优先级)并且将是
随内容大小而变化。高度和滚动禁用。
inner tableview 有两个标签。并且高度是自动尺寸
我希望主 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 的方法。布局子视图。设置需求显示。
我也实现了 willDisplayCell 但没有成功。
我认为问题是当我重新加载内部表格视图时。当它完成重新加载时,我如何通知主 tableview 以及如何更新内部 tableview 的高度常数
如果有人需要更多信息,请告诉我。
感谢任何帮助或建议
【问题讨论】:
-
你说内部 tableView 的高度是静态的,在代码中它是动态的
-
不! @Sh_Khan 一切都是动态的。内部表格视图数据不是静态的
-
你的意思是内部 tableView 最初是隐藏的,当点击主单元格中的按钮时,它会显示或从头开始显示
-
@Sh_Khan 没有隐藏表格视图。我在屏幕上都有两个 tableview 可见。当我滚动主表视图时,单元格高度不会根据内部表视图的内容大小精确增加
-
您能否创建最小的示例项目来重现相同的行为。这将是调试问题的良好开端
标签: ios swift uitableview uitableviewautomaticdimension