グループ化されたスタイルを使用するテーブルビューのデザインは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を返すと、ほぼ正しいです。ただし、シミュレータで「色がずれる画像」をオンにすると、すべてのテーブルビューセルがマークされます(これは論理的な結果のようです)。
質問UITableView:ヘッダーを空のセクションから非表示にするへの回答は、一部のユーザーがセクションヘッダーを非表示に成功したことを示しているようです。ただし、(グループ化されたスタイルではなく)プレーンスタイルに適用される場合があります。
これまでの最適な妥協点は、高さ0.5を返すことです。その結果、ナビゲーションバーの下のラインがやや太くなります。ただし、誰かが最初のセクションヘッダーを完全に非表示にする方法を知っているとありがたいです。
更新
caglarの分析(https://stackoverflow.com/a/19056823/413337)によると、この問題は、テーブルビューがナビゲーションコントローラーに含まれている場合にのみ発生します。
section == 0
です。