Причина, по которой Apple встроила возможность повторного использования ячеек табличного представления, заключается в том, что, хотя табличное представление может иметь много строк, на экране отображается только небольшое количество. Вместо выделения памяти для каждой ячейки приложения могут повторно использовать уже существующие ячейки и при необходимости перенастраивать их.
Во-первых, представления заголовков - это просто UIViews, и, хотя UITableViewCell является подклассом UIView, они не предназначены для размещения в качестве представления заголовка раздела.
Кроме того, поскольку у вас, как правило, будет гораздо меньше заголовков разделов, чем общего количества строк, нет особых оснований для создания механизма повторного использования, и фактически Apple не реализовала его для универсальных UIViews.
Обратите внимание, что если вы просто устанавливаете метку для заголовка, вы можете использовать -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
.
Для чего-то более нестандартного, например, надписи с красным текстом (или кнопки, изображения и т. Д.), Вы можете сделать что-то вроде этого:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(0,0, 320, 44)] autorelease];
UILabel *label = [[[UILabel alloc] initWithFrame:headerView.frame] autorelease];
label.textColor = [UIColor redColor];
label.text = [NSString stringWithFormat:@"Section %i", section];
[headerView addSubview:label];
return headerView;
}