我正在尝试添加包含在视图中的表视图,此视图具有宽度约束,视图的高度将由表视图的内容高度决定。但是,我无法让它发挥作用。
我的尝试:
我创建了一个包含leading
,top
和width
constraint
的视图。然后我在这个视图中插入一个表视图,这个表视图将对视图有一个前导,上限,下限和尾随约束(它是superview
)。我还设置了行高和估计值。运行代码时,numberOfRowsInSection
会被调用,但cellForRowAt
没有,我的猜测是因为高度没有正确解决,而且表的高度为0.我该如何解决这个问题? / p>
感谢。
答案 0 :(得分:0)
路易斯,
UITableView
继承自UIScrollView
。所以你不能期望tableView
为它的superView提供高度。实际上反之亦然。
TableView' frame
将由superView的框架决定,因为tableView的contentSize
将由您提供的数据决定。
所以你最好的赌注
解决方案1:
向View(SuperView)添加高度约束,并在VC中为其创建一个IBOutlet。
在tableView中设置每个单元格的高度,假设为50。
在tableView上调用reloadData()
之前获取要在tableView中显示的数据时,将View的高度约束常量设置为
viewsHeightConstraint.constant =(numberOfRows)* 50;
yourView.layoutIfNeeded()
解决方案2:
如果您计划对单元格使用自动高度,请根据tableView的ContentSize
设置视图高度。但要做到这一点,你必须首先获取数据,重新加载tableView与数据,现在完成后获取TableView的内容大小并相应地设置视图的框架。