2010-03-15 10 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; 
} 

}marco de viewForHeaderInSection es siempre del mismo tamaño

Ésta es mi implementación de viewForHeaderInSection pero cualquiera que sea el marco hago siempre me muestra el mismo marco rojo. ¿Ves algún problema con mi código?

Image:

enter image description here

ACTUALIZACIÓN:

Mhm ahora mi bloque rojo es más alto, pero mi primera tableHeader es ahora de alguna manera oculta. El primero fue implementado con titleForHeaderInSection. Pensé que acaba de poner en práctica la altura de la altura tableHeader pero eso no funciona

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

Respuesta

40

Es necesario poner en práctica este método delegado

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

En su caso, puede simplemente return 30;.


Además, se filtra la view!

Su [view release] ocurre después del return. Pero tan pronto como ocurra el return, se abortará la ejecución del método y nunca se llamará a su release.

Así que quieres esta vez

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

y deshacerse de lo explícito release abajo.

+0

thx, ¿sabes por qué no toman altura de rame? no veo por qué tengo que establecer la altura en un método de delegado adicional ... – gabac

+0

No sé por qué Apple lo hizo de esta manera. Es un poco tonto. Pero creo que pretendían que el marco del encabezado * siempre * abarcara todo el ancho de la vista de tabla. Entonces, la única variable de tamaño que queda es la altura. –

+0

thx acerca de la pista de la liberación automática. Pero ahora tengo otro problema, ¿quizás me puedes ayudar en otro momento? – gabac

Cuestiones relacionadas