Многоразовые представления заголовков TableView

29
задан Ilya Suzdalnitski 6 June 2009 в 17:07
поделиться

2 ответа

Причина, по которой 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;
}
34
ответ дан 28 November 2019 в 01:27
поделиться

Вы можете реализовать это, создав класс 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;
}

Примечание. Чтобы установить цвет фона, вам необходимо создать подпредставление с тем же фреймом, что и заголовок раздела, и задайте цвет для этого вида.

вы можете следовать

Изменение цвета фона в UITableViewHeaderFooterView, загруженном из xib, говорит, что вместо него следует использовать contentView.backgroundColor

11
ответ дан Community 6 June 2009 в 17:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: