Tableview的内容高度始终为零

问题描述

我有一个包含委托和数据源的表格视图。我正在动态更改表格视图的高度。我也有一个下拉菜单,单击一次将显示表格视图,如果再次单击将隐藏它。 如果我使用tableview.isHidden = true / false,它将隐藏表格视图,但是空白可见。在调试时tableview.contentSize.height始终为零。 有人可以指导我朝正确的方向发展吗?我想念什么吗?

解决方法

使用.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
}

在这种情况下,有很多关于表格视图中的显示/隐藏部分的优秀教程。