ios - Tableview 的内容高度始终为零
问题描述
我有一个带有委托和数据源集的表格视图。我正在动态更改表格视图的高度。我也有一个下拉菜单,当它被点击一次时,如果再次点击它,我会显示表格视图,我会隐藏它。如果我使用 tableview.isHidden = true/false 它会隐藏表格视图但空白区域是可见的。在调试时 tableview.contentSize.height 始终为零。有人可以指导我正确的方向。我错过了什么吗?
解决方案
使用 .isHidden 属性将其隐藏起来,但不会自动调整布局以解决它不可见的事实。
有两种方法对我来说效果很好。
堆栈视图
- 如果您确实想显示/隐藏整个表格视图,我发现在堆栈视图中嵌入元素确实有助于在这种情况下进行布局。假设您在视图控制器中有标题、按钮、表格视图作为三个元素。您可以将每个放在自己的堆栈视图中,所有这些都在整个堆栈视图中。那么如果你这样做
tableViewStackView.isHidden = true
然后父堆栈视图调整布局以考虑隐藏项,并根据需要调整大小。
表视图部分
- 相反,如果您在表格中显示/隐藏部分或行,那么您可以使用类似下面的内容,在用户点击标题行时切换 .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 中显示/隐藏部分,这些部分可能会遇到这种情况。
推荐阅读
- functional-programming - ELM 更新模型中的两个字段
- javascript - 更改 Svg 的文本
- java - 在 Android 中保存 UI 的状态
- python-3.x - 如何在python tk的新窗口中显示来自路径的图像
- java - E/AndroidRuntime: FATAL EXCEPTION: main PID: 7700
- angular - 在单元格渲染器中获取值列键?
- python - 发生异常:AttributeError 'Class' 对象没有属性 'Method'
- outlook - Debug Outlook VSTO Plugin from Visual Studio 2017 does not work --> debug not possible removing deployment from Outlook
- java - Java和MySql之间的连接
- excel - 尝试对集合进行排序时类型不匹配