首页 > 解决方案 > Tableview 的内容高度始终为零

问题描述

我有一个带有委托和数据源集的表格视图。我正在动态更改表格视图的高度。我也有一个下拉菜单,当它被点击一次时,如果再次点击它,我会显示表格视图,我会隐藏它。如果我使用 tableview.isHidden = true/false 它会隐藏表格视图但空白区域是可见的。在调试时 tableview.contentSize.height 始终为零。有人可以指导我正确的方向。我错过了什么吗?

标签: iosswiftuitableview

解决方案


使用 .isHidden 属性将其隐藏起来,但不会自动调整布局以解决它不可见的事实。

有两种方法对我来说效果很好。

堆栈视图

  1. 如果您确实想显示/隐藏整个表格视图,我发现在堆栈视图中嵌入元素确实有助于在这种情况下进行布局。假设您在视图控制器中有标题、按钮、表格视图作为三个元素。您可以将每个放在自己的堆栈视图中,所有这些都在整个堆栈视图中。那么如果你这样做
tableViewStackView.isHidden = true

然后父堆栈视图调整布局以考虑隐藏项,并根据需要调整大小。

表视图部分

  1. 相反,如果您在表格中显示/隐藏部分或行,那么您可以使用类似下面的内容,在用户点击标题行时切换 .opened 属性?
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if item.opened == false {
       return 1 //only show the first row in the the section 
    }
       return items[section].rowCount + 1 //show all rows in the section
}

有很多很好的教程可以在 tableview 中显示/隐藏部分,这些部分可能会遇到这种情况。


推荐阅读