Рамка viewForHeaderInSection всегда имеет одинаковый размер.

StackOverflow https://stackoverflow.com/questions/2450122

Вопрос

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{

 if(section != 0) {

  UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(10, 10, 100, 30)] autorelease];
  view.backgroundColor = [UIColor redColor];

  return view;

 } else {
  return tableView.tableHeaderView;
 }

}

Это моя реализация viewForHeaderInSection, но какой бы кадр я ни делал, он всегда показывает мне одну и ту же красную рамку.Вы видите какие-либо проблемы с моим кодом?

Изображение:

enter image description here

ОБНОВЛЯТЬ:

Ммм, теперь мой красный блок выше, но мой первый tableHeader теперь каким-то образом скрыт.Первый был реализован с помощью titleForHeaderInSection.Я думал, что просто реализую высоту высоты tableHeader, но это не работает.

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
if(section == 1)
    return 30;
else
    return tableView.tableHeaderView.frame.size.height;
}
Это было полезно?

Решение

Вам необходимо реализовать этот метод делегата

    - (CGFloat)tableView:(UITableView *)tableView
heightForHeaderInSection:(NSInteger)section;

В вашем случае вы можете просто return 30;.


Также, у тебя течет view!

Твой [view release] происходит после того, как return.Но как только return случается, что выполнение метода прерывается, и ваш release никогда не вызывается.

Итак, вы хотите этого вместо этого

UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(10, 10, 100, 30)] autorelease];

И избавьтесь от явного release внизу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top