UITtackView中没有显示UITableView

我有一个UIStackView ,它可以显示标签,图像,表格视图或根据用户选择显示任何内容。 这是我当前的动态视图层次结构:

  • UIStackView_Parent
    • UILabel – 一些文字,固定视图
    • UIStackView_Child – 这是可以显示多个东西或什么也不显示的容器
    • UIView – 另一个固定的观点

当我使用标签或图像调用UIStackView_Child.addArrangedSubview(...) ,它可以正常工作,但addArrangedSubview(tableView)不显示该表。 我有tableView.scrollEnabled = false并根据单元格数将帧设置为固定高度并定义了表格的cellHeight

任何帮助将不胜感激,谢谢!

那是因为stackview试图尽可能地压缩内容。 当你初步添加一个tableview时,我假设它没有内容,所以stackview将宽度压缩为0,因为它没有任何显示。 你必须做两件事之一:

在表填充数据后,您必须设置tableView的框架。 我通过计算每个细胞的大小来做到这一点。 我知道宽度将与包含stackview的视图一样大。 所以它最终变成了类似的东西

 let estimatedHeight = tableView.numberOfRows(inSection: 0) //You may need to modify as necessary let width = parentView.frame.size.width tableView.frame = CGRect(x: 0, y: 0, width: width, height: estimatedHeight) 

设置tableView的框架后,stackview应自动调整。

在没有明确设置框架高度和宽度的情况下执行此操作的另一种方法是将表视图嵌入到空视图中,将表视图固定到顶部,底部,左侧和右侧,并将“大于或等于”约束设置为表格视图的高度。