Karena desain tampilan tabel menggunakan gaya yang dikelompokkan berubah drastis dengan iOS 7, saya ingin menyembunyikan (atau menghapus) tajuk bagian pertama. Sejauh ini saya belum berhasil mencapainya.
Agak disederhanakan, kode saya terlihat seperti ini:
- (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 ...
}
}
Jika saya mengembalikan tinggi 0, dua metode lainnya tidak akan pernah dipanggil dengan indeks bagian 0. Namun header bagian kosong masih digambar dengan tinggi default. (Di iOS 6, kedua metode ini dipanggil. Namun, hasil yang terlihat sama.)
Jika saya mengembalikan nilai yang berbeda, header bagian mendapatkan ketinggian yang ditentukan.
Jika saya mengembalikan 0,01, itu hampir benar. Namun, saat saya mengaktifkan "Warna Gambar Tidak Sejajar" di simulator, ini menandai semua sel tampilan tabel (yang tampaknya merupakan konsekuensi logis).
Jawaban atas pertanyaan UITableView: hide header from empty section sepertinya menunjukkan bahwa beberapa orang berhasil menyembunyikan header bagian tersebut. Tapi itu mungkin berlaku untuk gaya polos (bukan yang dikelompokkan).
Kompromi terbaik sejauh ini adalah mengembalikan tinggi 0,5, menghasilkan garis yang agak lebih tebal di bawah bilah navigasi. Namun, saya akan menghargai jika ada yang tahu bagaimana header bagian pertama dapat disembunyikan sepenuhnya.
Memperbarui
Menurut analisis caglar ( https://stackoverflow.com/a/19056823/413337 ), masalah hanya muncul jika tampilan tabel terdapat dalam pengontrol navigasi.
section == 0
.