Vì thiết kế dạng xem bảng sử dụng kiểu nhóm đã thay đổi đáng kể với iOS 7, tôi muốn ẩn (hoặc xóa) tiêu đề phần đầu tiên. Cho đến nay tôi vẫn chưa đạt được nó.
Được đơn giản hóa một chút, mã của tôi trông như thế này:
- (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 ...
}
}
Nếu tôi trả về chiều cao là 0, hai phương thức khác sẽ không bao giờ được gọi với chỉ mục phần 0. Tuy nhiên, một tiêu đề phần trống vẫn được vẽ với chiều cao mặc định. (Trong iOS 6, hai phương thức được gọi. Tuy nhiên, kết quả hiển thị là giống nhau.)
Nếu tôi trả về một giá trị khác, tiêu đề phần sẽ có chiều cao được chỉ định.
Nếu tôi trả về 0,01, nó gần như chính xác. Tuy nhiên, khi tôi bật "Hình ảnh bị lệch màu" trong trình mô phỏng, nó sẽ đánh dấu tất cả các ô xem bảng (có vẻ là một hệ quả hợp lý).
Các câu trả lời cho câu hỏi UITableView: ẩn tiêu đề khỏi phần trống dường như chỉ ra rằng một số người đã thành công trong việc ẩn tiêu đề phần. Nhưng nó có thể áp dụng cho kiểu đơn giản (thay vì kiểu được nhóm lại).
Sự thỏa hiệp tốt nhất cho đến nay là trả lại chiều cao 0,5, dẫn đến một đường kẻ hơi dày hơn bên dưới thanh điều hướng. Tuy nhiên, tôi sẽ đánh giá cao nếu ai đó biết làm thế nào mà tiêu đề phần đầu tiên có thể bị ẩn hoàn toàn.
Cập nhật
Theo phân tích của caglar ( https://stackoverflow.com/a/19056823/413337 ), vấn đề chỉ nảy sinh nếu chế độ xem bảng được chứa trong bộ điều khiển điều hướng.
section == 0
.