Question

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

}

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

Image:

entrer image description ici

Mise à jour:

Hmm maintenant mon bloc rouge est plus élevé, mais mon premier TableHeader est maintenant en quelque sorte caché. Le premier a été mis en œuvre avec le titleForHeaderInSection. Je pensais que je mettre 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;
}
Était-ce utile?

La solution

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 la return. Mais dès que le return arrive l'exécution méthode est annulée et votre release est jamais appelé.

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top