我有一个UIStackView
,可以根据用户选择显示标签,图片,表格或任何内容。这是我当前动态视图的层次结构:
当我使用标签或图片调用UIStackView_Child.addArrangedSubview(...)
时,它可以正常运行,但addArrangedSubview(tableView)
不显示该表格。我有tableView.scrollEnabled = false
并根据单元格数将帧设置为固定高度,并定义了表格cellHeight
。
非常感谢任何帮助,谢谢!
答案 0 :(得分:6)
在没有明确设置框架高度和宽度的情况下执行此操作的另一种方法是将表视图嵌入到空视图中,将表视图固定到顶部,底部,左侧和右侧,并设置大于或等于等于"约束到表格视图的高度。
答案 1 :(得分:4)
那是因为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应自动调整。