Domanda

Ho cambiato le sezioni di backgroundcolor/background delle mie sezioni di viste da tabella.
Sto usando la visione semplice della tabella. Non preoccuparti, fai funzionare senza problemi con questo codice:

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UIView *sectionView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 728, 40)] autorelease];
sectionView.backgroundColor = [UIColor greenColor];

//For using an image use this:
//sectionView.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"whiteBackground.png"]];

return sectionView;
}  

Il problema ora è, Il titolo della sezione è sparito.

Sto impostando il titolo della sezione con questo codice:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {

if ([tableView isEqual:self.searchDisplayController.searchResultsTableView]){
    return @"";
} else {    
    id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
    return [sectionInfo name];
}


}

Sto ottenendo i titoli della sezione se non uso

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

Bisogno del tuo aiuto.
Molte grazie.

EDIT 1:

Grazie a Mutix:

Nel mio caso, la risposta sarebbe:

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




UIView *sectionView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 728, 20)] autorelease];
sectionView.backgroundColor = [UIColor greenColor];

//sectionView.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"whiteBackground.png"]];

//Add label to view
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 728, 20)];
titleLabel.backgroundColor = [UIColor clearColor];

//section Title
if ([tableView isEqual:self.searchDisplayController.searchResultsTableView]){
    titleLabel.text = @"";
} else {    
    id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
    titleLabel.text = [sectionInfo name];
}



[sectionView addSubview:titleLabel];
[titleLabel release];

return sectionView;

}

È stato utile?

Soluzione

Il viewForHeaderInSection Scora il titleForHeaderInSection metodo.

Per aggiungere un titolo alla tua intestazione quando si utilizza viewForHeaderInSection Dovrai aggiungere un'etichetta alla vista dell'intestazione della sezione in questo modo:

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

    UIView *sectionView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 728, 40)] autorelease];

    sectionView.backgroundColor = [UIColor greenColor];

    //Add label to view
    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 728, 40)];
    titleLabel.text = @"title";
    [sectionView addSubview:titleLabel];
    [titleLabel release];

    return sectionView;
}  

Altri suggerimenti

Abbiamo una soluzione migliore per questo da iOS6 in poi:

C'è un metodo delegato

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

Puoi usare questo metodo come questo

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

     //Set the background color of the View
     view.tintColor = [UIColor blueColor];

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

}

Implementa il metodo di seguito da UableViewDelegate e la vista dell'interfaccia utente necessaria.

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let view = UITableViewHeaderFooterView()
    view.contentView.backgroundColor = UIColor(white: 0.97, alpha: 1)
    return view
}

Se è necessario modificare il piè di pagina, utilizzare un codice simile in ... ViewForFooterInsection .. Metodo

Vuoi disegnare il tuo carattere, usa una personalizzazione simile:

...    
let label = UILabel(frame: CGRectMake(0, 0, CGRectGetWidth(tableView.bounds), tableView.sectionHeaderHeight))
label.font = UIFont(name: "HelveticaNeue", size: 14)!
label.text = self.tableView(tableView, titleForHeaderInSection: section)
view.contentView.addSubview(label)

view.textLabel.hidden = true
...

Basta aggiungere [titleLabel setBackgroundColor:[UIColor clearColor]];
Perché nel mio caso l'etichetta si sovrapponeva il colore verde.

~ Soluzione migliore iPhone 3.5 e 4 schermo ~

Imposta il colore posteriore o l'immagine di sfondo da questo codice. Qui non devi calcolare per l'altezza della sezione, basta impostare in XIB.

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

    UIView *sectionView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width,tableView.sectionHeaderHeight)];
    sectionView.backgroundColor = [UIColor greenColor];

    return sectionView;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top