如何实现高级表视图头

时间:2012-07-13 18:04:26

标签: iphone objective-c ios cocoa-touch uitableview

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

标准

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

我需要什么

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

一些评论:

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

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

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

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

http://6.mshcdn.com/wp-content/uploads/2010/08/2photo.jpg

1 个答案:

答案 0 :(得分:4)

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

这是项目:besi/FloatingTableViewHeader

摘自自述文件:

  

浮动UITableView标头

     

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

     

设置

     

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

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

    结果

         

    Floating Headers http://i.minus.com/jyea3I5qbUdoQ.png