Подтвердить что ты не робот

Рамка viewForHeaderInSection всегда одного размера

- (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

ОБНОВЛЕНИЕ:

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

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
if(section == 1)
    return 30;
else
    return tableView.tableHeaderView.frame.size.height;
}
4b9b3361

Ответ 1

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

    - (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 ниже.