2010-03-05 13 views

risposta

18

è necessario implementare questo metodo nel protocollo UITableViewDelegate:

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

Ecco un link al documentation

... e fare qualcosa del genere (sotto nel vostro colore):

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

È anche possibile utilizzare il numero intero di sezioni per alternare colori o qualcosa di simile. Penso che l'altezza predefinita per le sezioni sia 22, ma puoi farla come vuoi. È questo che intendevi con la tua domanda? Spero che questo ti aiuti.

+0

Grazie, ho pensato che ci sarebbe stato un qualche tipo di trigger in IB per passare al colore nero. Ma comunque, grazie. –

+1

Ma per favore, metti in cache quelle viste. C'è un bug in UIKit che causa la richiesta di visualizzazioni di intestazione quando viene eseguito lo scroll di TableView, quindi questo metodo verrà richiamato per ogni offset di pixel durante lo scorrimento. 22px è davvero l'altezza predefinita. – Joost

+1

ciao, ho capito che questo metodo viene chiamato quando lo scorrimento ha luogo ... come possiamo memorizzare questo in modo da salvare le viste non necessarie create ecc.? se potresti postare un commento o un aggiornamento al tuo post sarà molto utile. grazie – 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

Questa è una vecchia domanda, ma penso che la risposta debba essere aggiornata.

Questo metodo non comporta la definizione di viste personalizzate.
In iOS 6 e versioni successive, è possibile modificare facilmente il colore di sfondo e il colore del testo definendo il metodo

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

Ad esempio:

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

Tratto da mio post qui: https://happyteamlabs.com/blog/ios-how-to-customize-table-view-header-and-footer-colors/

Problemi correlati