グループ化されたスタイルを使用したテーブル ビューのデザインが iOS 7 で大幅に変更されたため、最初のセクション ヘッダーを非表示 (または削除) したいと考えています。これまでのところ、私はそれを達成することができませんでした。
やや単純化された、私のコードは次のようになります。
- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (section == 0)
return 0.0f;
return 32.0f;
}
- (UIView*) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if (section == 0) {
UIView* view = [[UIView alloc] initWithFrame: CGRectMake(0.0f, 0.0f, 640.0f, 0.0f)];
return view;
}
return nil;
}
- (NSString*) tableView:(UITableView *) tableView titleForHeaderInSection:(NSInteger)section
{
if (section == 0) {
return nil;
} else {
// return some string here ...
}
}
高さ 0 を返すと、他の 2 つのメソッドがセクション インデックス 0 で呼び出されることはありません。それでも、空のセクション ヘッダーはデフォルトの高さで描画されます。(iOS 6 では、2 つのメソッドが呼び出されます。ただし、表示される結果は同じです。)
別の値を返すと、セクション ヘッダーは指定された高さになります。
0.01を返せばほぼ正解です。ただし、シミュレータで「Color Misaligned Images」をオンにすると、すべてのテーブル ビュー セルがマークされます (これは論理的な結果のようです)。
質問UITableView: hide header from empty sectionへの回答は、一部の人々がセクション ヘッダーを非表示にすることに成功したことを示しているようです。ただし、(グループ化されたものではなく) プレーンなスタイルに適用される場合があります。
これまでの最善の妥協点は、高さ 0.5 を返すことです。その結果、ナビゲーション バーの下の線がやや太くなります。ただし、最初のセクション ヘッダーを完全に非表示にする方法を誰かが知っていれば幸いです。
アップデート
caglarの分析 ( https://stackoverflow.com/a/19056823/413337 ) によると、この問題は、テーブル ビューがナビゲーション コントローラーに含まれている場合にのみ発生します。