Причина, по которой Apple встроила возможность повторного использования ячеек табличного представления, заключается в том, что, хотя табличное представление может иметь много строк, на экране отображается только несколько строк. Вместо выделения памяти для каждой ячейки приложения могут повторно использовать уже существующие ячейки и при необходимости перенастроить их.
Прежде всего, представления заголовков - это просто UIViews, и хотя UITableViewCell является подклассом UIView, они не предназначены для размещения в качестве представление заголовка раздела.
Кроме того, поскольку обычно у вас будет гораздо меньше заголовков разделов, чем всего строк, нет особых причин для создания механизма повторного использования, и на самом деле Apple не реализовала его для общих UIViews.
Обратите внимание, что если вы просто устанавливаете метку для заголовка, вы можете использовать - (NSString *) tableView: (UITableView *) tableView titleForHeaderInSection: Вместо этого (NSInteger) раздел
.
Для чего-то более индивидуального, например, метки с красным текстом (или кнопки, изображения и т. Д.), Вы можете сделать что-то вроде этого:
- (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;
}
Вы можете реализовать это, создав класс UITableViewHeaderFooterView , который является подклассом UIView Вам также необходимо создать отдельный XIB, так как он не будет создан автоматически с помощью UITableViewHeaderFooterView создание.
Зарегистрируйте Nib с табличным представлением
[self.tblCart registerNib:[UINib nibWithNibName:@"CartHeaderView" bundle:nil] forHeaderFooterViewReuseIdentifier:@"CartHeader"];
Теперь вы можете получить доступ к нему в viewForHeaderInSection
-(UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
CartHeaderView *sectionHeader=[tableView dequeueReusableHeaderFooterViewWithIdentifier:@"CartHeader"];
return sectionHeader;
}
Примечание. Чтобы установить цвет фона, вам необходимо создать подпредставление с тем же фреймом, что и заголовок раздела, и задайте цвет для этого вида.
вы можете следовать