一尘不染

UITableView没有显示在UIStackView内部

swift

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

  • UIStackView_Parent
    • UILabel-一些文本,固定视图
    • UIStackView_Child-这是可以显示多个内容或不显示任何内容的容器
    • UIView-另一个固定视图

当我UIStackView_Child.addArrangedSubview(...)用标签或图像打电话时,它可以正常工作,但addArrangedSubview(tableView)不显示表格。我已经tableView.scrollEnabled = false根据单元格的数量将框架设置为固定高度,并定义了表格的cellHeight

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


阅读 472

收藏
2020-07-07

共1个答案

一尘不染

那是因为stackview尝试尽可能多地压缩内容。当您最初添加一个表视图时,我假设它没有内容,所以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应该会自动调整。

2020-07-07