2

我有一个分组的UITableView. 现在与默认的表格视图标题不同,我的标题应该在单个单元格旁边:

标准:

[Header Cell]
[Item 1]
[Item 2]

我需要的

+-------+----------------+
|       |  Item 1a       |
|  h1   +----------------+
|       |  Item 1b       |
+ - - - +----------------+
|          Item 1c       |
+------------------------+
|       |  Item 2a       |
|  h2   +----------------+
|       |  Item 2b       |
+------------------------+
|       |  Item 3a       |
|  h3   +----------------+
|       |  -placeholder- |
+-------+----------------+

一些备注:

  • H1组有3个项目
  • H2组有两个项目
  • H3 组只有一个项目(我必须插入一个占位符单元格,以便标题单元格可以具有两个项目单元格的完整高度
  • 当用户滚动列表时,标题应该向上推,两个标题单元格不重叠。

这里的挑战是标题单元格的高度:

  • 如果我将高度设置为 0 并取消选中clip subviews,则显示标题单元格,但不会在正确的位置被推开。
  • 如果我将标题单元格的高度设置为视觉高度,那么在我不想要的表格的整个宽度上都有一个该高度的空白空间......

更新 1:我刚刚意识到苹果使用这样的列表进行搜索(按消息、邮件、联系人、日历等分组)。所以我的问题基本上是如何调整UITableView才能表现得像分组搜索结果...... :-)


(来源:mshcdn.com

4

1 回答 1

4

更新:我在 github 上创建了一个项目,正是这样做的。我已将行为的所有相关代码提取到两个类(BBFloatingHeaderViewController& BBFloatingHeaderCell)中。还有一个示例项目。我希望这对其他人有用:-)

这是项目:besi/FloatingTableViewHeader

这是自述文件的摘录:

浮动 UITableView 标头

这些类旨在复制 iOS 内置 Spotlight 搜索中的行为,其中搜索结果按类别分组,相应类别的图标浮动在搜索结果的左侧。

设置

查看示例项目,了解如何设置类。

  1. 将和的.m+.h文件添加到您的项目中。BBFloatingHeaderViewControllerBBFloatingHeaderCell
  2. 创建一个 TableView 并将 ViewController 的 Class 设置为您的子类BBFloatingHeaderViewController
  3. 在 IB 中创建标题单元并将其类设置为您的子类BBFloatingHeaderCell
  4. 确保您的浮动标题视图是BBFloatingHeaderCell视图层次结构中的最顶层视图。

结果

浮动标题 http://i.minus.com/jyea3I5qbUdoQ.png

于 2012-07-13T22:03:18.787 回答