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には2つのアイテムがあります
  • グループH3にはアイテムが1つだけあります(ヘッダーセルが2つのアイテムセルの高さ全体になるように、プレースホルダーセルを挿入する必要があります)
  • ユーザーがリストをスクロールするとき、2つのヘッダーセルが重ならないようにヘッダーを上にプッシュする必要があります。

ここでの課題は、ヘッダーセルの高さです。

  • 高さを0に設定してチェックを外すとclip subviews、そのヘッダーセルは表示されますが、正しい位置に押し出されません。
  • ヘッダーセルの高さを視覚的な高さに設定すると、テーブルの幅全体にその高さの空きスペースができます...

更新1:アップルが検索にそのようなリストを使用していることに気づきました(メッセージ、メール、連絡先、カレンダーなどでグループ化されています)。UITableViewしたがって、私の質問は基本的に、グループ化された検索結果のように動作するように調整するにはどうすればよいですか... :-)


(ソース:mshcdn.com

4

1 に答える 1

4

更新:私はgithubでプロジェクトを作成しましたが、これはまさにこれを行います。動作に関連するすべてのコードを2つのクラス(BBFloatingHeaderViewControllerBBFloatingHeaderCell)に抽出しました。サンプルプロジェクトもあります。これが他の人にも役立つことを願っています:-)

プロジェクトは次のとおりです:besi / FloatingTableViewHeader

これは、Readmeからの抜粋です。

フローティングUITableViewヘッダー

これらのクラスは、iOSの組み込みSpotlight検索で見つかった動作をコピーすることを目的としています。この場合、検索結果はカテゴリごとにグループ化され、それぞれのカテゴリのアイコンが検索結果の左側に表示されます。

設定

サンプルプロジェクトをチェックして、クラスの設定方法を確認してください。

  1. .m+.hファイルをBBFloatingHeaderViewControllerプロジェクトBBFloatingHeaderCellに追加します。
  2. TableViewを作成し、ViewControllerのクラスを次のサブクラスに設定します。BBFloatingHeaderViewController
  3. IBでヘッダーセルを作成し、そのクラスを次のサブクラスに設定します。BBFloatingHeaderCell
  4. BBFloatingHeaderCellフローティングヘッダービューがのビュー階層の最上位ビューであることを確認してください。

結果

フローティングヘッダーhttp://i.minus.com/jyea3I5qbUdoQ.png

于 2012-07-13T22:03:18.787 に答える