2010-03-05 12 views

Répondre

18

vous avez besoin de mettre en œuvre cette méthode dans le protocole UITableViewDelegate:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 

Voici un lien vers la documentation

... et faire quelque chose comme ça (sous dans votre propre couleur):

UIView *sectionView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 22)] autorelease]; 
[sectionView setBackgroundColor:[UIColor blackColor]]; 
return sectionView; 

Vous pouvez également utiliser la section entier pour alterner les couleurs ou quelque chose de similaire. Je pense que la hauteur par défaut pour les sections est 22, mais vous pouvez en faire ce que vous voulez. Est-ce ce que vous vouliez dire par votre question? J'espère que cela t'aides.

+0

Merci, je pensais qu'il y aurait une sorte de déclenchement dans IB pour passer à la couleur noire. Mais de toute façon, merci. –

+1

Mais s'il vous plaît, cachez ces vues. Il y a un bogue dans UIKit qui provoque des requêtes d'en-tête lors du défilement de la tableView, donc cette méthode sera appelée pour chaque décalage de pixel lors du défilement. 22px est en effet la hauteur par défaut. – Joost

+1

Salut, je comprends que cette méthode est appelée lorsque le défilement a lieu ... comment pouvons-nous mettre en cache ceci afin d'économiser les vues inutiles étant créés etc ..? Si vous pouvez poster un commentaire ou une mise à jour à votre message, ce sera très utile. Je vous remercie – Pavan

0
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
    { 
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0,tableView.bounds.size.width, 30)]; 
    if (section == 0) 
    [headerView setBackgroundColor:[UIColor redColor]]; 
    else 
    [headerView setBackgroundColor:[UIColor clearColor]]; 
    return headerView; 
    } 
20

Ceci est une vieille question, mais je pense que la réponse doit être mise à jour.

Cette méthode n'implique pas la définition de vos propres vues personnalisées.
Sous iOS 6 et versions ultérieures, vous pouvez facilement modifier la couleur d'arrière-plan et la couleur du texte en définissant la méthode de délégation

- (void)tableView:(UITableView *)tableView 
     willDisplayHeaderView:(UIView *)view 
     forSection:(NSInteger)section
.

Par exemple:

 
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section 
{ 
    // Background color 
    view.tintColor = [UIColor blackColor]; 

    // Text Color 
    UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view; 
    [header.textLabel setTextColor:[UIColor whiteColor]]; 

    // Another way to set the background color 
    // Note: does not preserve gradient effect of original header 
    // header.contentView.backgroundColor = [UIColor blackColor]; 
} 

Tiré de mon post ici: https://happyteamlabs.com/blog/ios-how-to-customize-table-view-header-and-footer-colors/

Questions connexes