2010-03-15 3 views
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 всегда одинаковый размер

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

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

enter image description here

UPDATE:

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

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

ответ

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 внизу.

+0

thx, вы знаете, почему они не принимают высоту rame? не понимаю, почему мне нужно установить высоту в дополнительном методе делегата ... – gabac

+0

Я не знаю, почему Apple сделала это так. Это немного глупо. Но я думаю, что они предполагали, что рамка заголовка всегда * охватывает всю ширину представления таблицы. Таким образом, единственная переменная размера, оставшаяся до беспорядка, - это высота. –

+0

thx о намеке на автореферат. Но теперь у меня другая проблема, может быть, ты поможешь мне в другой раз? – gabac

Смежные вопросы