在 UITableView 中的部分之间隐藏部分/空间

Posted

技术标签:

【中文标题】在 UITableView 中的部分之间隐藏部分/空间【英文标题】:Hide a section / space between sections in UITableView 【发布时间】:2018-10-18 15:39:08 【问题描述】:

在某些情况下,我想隐藏UITableView 的一部分

我已经通过返回 0 行作为部分并返回 nil 作为部分标题来解决这个问题。

之后该部分为空/不可见,但其余部分之间的间隙比平时更大。

我尝试将heightForHeaderheightForFooter 设置为0.0,但空间仍然更大。

如何避免这些部分之间的额外空间?

【问题讨论】:

【参考方案1】:

我在this thread找到了解决方案。

长话短说:您必须在 viewDidLoad 中设置 self.tableView.sectionHeaderHeight = 0.0self.tableView.sectionFooterHeight = 0.0

无论出于何种原因,heightForHeaderheightForFooter 委托方法都会被忽略。

【讨论】:

【参考方案2】:

为节返回 0 行,为节标题返回 nil 并不意味着该节是隐藏的。这只是意味着该部分的数据被清除了,这就是为什么仍然出现相当于该部分大小的区域的原因。

解决方案:

您应该在 numberOfSections 和 cellForRowAt 函数中放入允许或禁止该部分(例如使用 Bool 变量)的条件,当您想要隐藏它时,只需将 Bool 设置为 false 并重新加载 UITableView 的数据。

【讨论】:

在我看来,为了隐藏单个部分而重新加载整个 TableView 并不是一个好方法。使用我当前的实现,我可以明确地使用 reloadSections 来刷新受影响的部分,并同时平滑地对其进行动画处理。 你说得对,我同意你的看法。我认为下面的链接可以帮助你。 ***.com/questions/1061208/… 谢谢@Mina Hanna——你的回答让我走向了正确的方向!

以上是关于在 UITableView 中的部分之间隐藏部分/空间的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 部分中的背景图像隐藏部分标题

从 uitableview 隐藏或删除部分

Swift 中的 UITableView 无法识别 UINavigationBar,填充已关闭,部分 tableview 被隐藏

在 UITableView 中的部分索引标题之间添加填充(或增加高度)

如何在动态 uitableview 中隐藏部分及其行

在 UITableView 中隐藏/显示单元格?