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

17
- (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, но любой кадр, который я делаю, всегда показывает мне тот же красный фрейм. Вы видите какие-либо проблемы с моим кодом?

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

ОБНОВЛЕНИЕ:

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

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
if(section == 1)
    return 30;
else
    return tableView.tableHeaderView.frame.size.height;
}
    
задан gabac 15.03.2010 в 21:08
источник

1 ответ

40

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

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

    
ответ дан Alex Wayne 15.03.2010 в 21:10
источник
  • thx, вы знаете, почему они не принимают высоту рама? не вижу, почему мне нужно установить высоту в дополнительном методе делегата ... –  gabac 15.03.2010 в 21:15
  • Я не знаю, почему Apple сделала это так. Это немного глупо. Но я думаю, что они предполагали, что рамка заголовка всегда будет охватывать всю ширину представления таблицы. Таким образом, единственная переменная размера, оставшаяся до беспорядка, - это высота. –  Alex Wayne 15.03.2010 в 21:18
  • thx о намеке на автореферат. Но теперь у меня другая проблема, может быть, ты поможешь мне в другой раз? –  gabac 15.03.2010 в 21:23
  • Это другая проблема, и это немного неясно. Отправьте новый вопрос только с соответствующим кодом и новым изображением, показывающим проблему. –  Alex Wayne 15.03.2010 в 23:00
  • thx много. Сделал это: stackoverflow.com/questions/2450957/... –  gabac 15.03.2010 в 23:38