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

}cadre de viewForHeaderInSection est toujours la même taille

Ceci est ma mise en œuvre de viewForHeaderInSection mais je fais tout cadre il me montrant toujours le même cadre rouge. Voyez-vous un problème avec mon code?

Image:

enter image description here

MISE À JOUR:

Hmm maintenant mon bloc rouge est plus élevé, mais mon premier TableHeader est maintenant en quelque sorte caché. Le premier a été implémenté avec le titreForHeaderInSection. Je pensais que je mets en œuvre la hauteur juste de la hauteur de TableHeader mais que le travail ne marche pas

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

Répondre

40

Vous devez mettre en œuvre cette méthode déléguée

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

Dans votre cas, vous pouvez simplement return 30;.


En outre, vous view une fuite de!

Votre [view release] se produit après le return. Mais dès que le return se produit l'exécution de la méthode est annulée et votre release n'est jamais appelée.

Alors vous voulez que ce lieu

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

Et se débarrasser de la release explicite en bas.

+0

thx, vous savez pourquoi ils ne prennent pas la hauteur de la rame? Ne vois pas pourquoi je dois définir la hauteur dans une méthode de délégué supplémentaire ... – gabac

+0

Je ne sais pas pourquoi Apple l'a fait de cette façon. C'est un peu idiot. Mais je pense qu'ils ont voulu que le cadre d'en-tête couvre * toujours * toute la largeur de la vue de la table. Donc, la seule variable de taille à gauche est la hauteur. –

+0

thx sur l'indice de l'autorelease. Mais maintenant j'ai un autre problème, peut-être pourriez-vous m'aider une autre fois? – gabac