嵌入在视图中的UITableView没有相应的大小调整

时间:2017-08-29 08:16:36

标签: ios uitableview autolayout

我正在尝试添加包含在视图中的表视图,此视图具有宽度约束,视图的高度将由表视图的内容高度决定。但是,我无法让它发挥作用。

我的尝试: 我创建了一个包含leadingtopwidth constraint的视图。然后我在这个视图中插入一个表视图,这个表视图将对视图有一个前导,上限,下限和尾随约束(它是superview)。我还设置了行高和估计值。运行代码时,numberOfRowsInSection会被调用,但cellForRowAt没有,我的猜测是因为高度没有正确解决,而且表的高度为0.我该如何解决这个问题? / p>

感谢。

1 个答案:

答案 0 :(得分:0)

路易斯,

UITableView继承自UIScrollView。所以你不能期望tableView为它的superView提供高度。实际上反之亦然。

TableView' frame将由superView的框架决定,因为tableView的contentSize将由您提供的数据决定。

所以你最好的赌注

解决方案1:

  1. 向View(SuperView)添加高度约束,并在VC中为其创建一个IBOutlet。

  2. 在tableView中设置每个单元格的高度,假设为50。

  3. 在tableView上调用reloadData()之前获取要在tableView中显示的数据时,将View的高度约束常量设置为

    viewsHeightConstraint.constant =(numberOfRows)* 50;

    yourView.layoutIfNeeded()

  4. 解决方案2:

    如果您计划对单元格使用自动高度,请根据tableView的ContentSize设置视图高度。但要做到这一点,你必须首先获取数据,重新加载tableView与数据,现在完成后获取TableView的内容大小并相应地设置视图的框架。