如何在UITableView中隐藏一个部分?

Teo*_*ing 26 iphone iphone-sdk-3.0

表中有一些部分不包含任何数据,并且想要隐藏该部分.

这该怎么做?

TJe*_*Jez 52

实际上,你可以"隐藏"一个部分.如果要对内置联系人应用程序使用类似的行为,其中隐藏了部分但仍在右侧索引中列出,则可以执行以下操作:

实施UITableViewDataSource协议:

  • 在方法中返回所有部分名称(甚至是隐藏的部分名称)sectionIndexTitlesForTableView.

  • 对于每个空部分,niltitleForHeaderInSection方法返回.

  • 对于每个空的部分收益0numberOfRowsInSection方法.

我发现这比删除部分更好,因为用户具有一致的索引导航.

  • 对我来说不起作用 - "隐藏"部分仍占用垂直空间,当有少数部分时,它们非常明显.糟糕,因为它是一个优雅的解决方案! (11认同)
  • 有关删除默认页眉/页脚间距的信息,请参见http://stackoverflow.com/questions/2495936/grouped-uitableview-shows-blank-space-when-section-is-empty/4007285#4007285. (2认同)
  • 这非常适合带有标准标题的普通表格 - 没有间距问题。 (2认同)

Tim*_*Tim 22

您不能"隐藏"某个部分,但可以使用该deleteSections:withRowAnimation:方法从表视图中"删除"它.这将使用可选动画将其从视图中删除,而不会影响您的后备数据.(但是,您应该更新数据,以便该部分不再出现.)

更多信息:UITableView类引用


小智 14

确实,0不是页眉和页脚的有效高度.但是,高度是CGFloat值.您可以为部分页眉和页脚的高度指定一个非常小的数字(我使用过0.1).

一种黑客,但它的工作原理.


Dee*_*yan 5

我不同意蒂姆.我们可以从代码中的任何位置访问表的任何部分/行,并更改其.hidden属性(以及所有其他属性).

这是我通常使用的方式:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:2];
[self.SeymourCakesTableView cellForRowAtIndexPath:indexPath].hidden = YES;
Run Code Online (Sandbox Code Playgroud)

  • 它可以工作,但是问题在于它下面的单元格不会向上移动。就我而言,单元格位于最下面的表格中,解决方案很好。 (2认同)