Cómo cambiar el estilo de fuente y el color de background en el método titleForHeaderInSection

después de un largo código de lectura y verificación, me enorgullece tener una vista de tabla personalizada con secciones y títulos de sección, todos poblados de objects de datos centrales. Ahora tendría que personalizar el título de la sección y el color de background. Lo he visto hacer pero en un método viewForHeaderInSection . ¿No es posible dentro de mi método titleForHeaderInSection ? Aquí tienes mi método:

 -(NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ id <NSFetchedResultsSectionInfo> theSection = [[self.fetchedResultsController sections]objectAtIndex:section]; NSString *sectionname = [theSection name]; if ([sectionname isEqualToString:@"text 1"]){ return @"Today"; } else if ([sectionname isEqualToString:@"text 2"]){ return @"Tomorrow"; } if ([[self.fetchedResultsController sections]count]>0){ id<NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections]objectAtIndex:section]; return [sectionInfo name]; } else{ return nil; } } 

Aquí hay un ejemplo que usa su código existente para establecer el text del título, pero le permite usar UITableViewHeaderFooterView para ajustar la apariencia:

 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { static NSString *header = @"customHeader"; UITableViewHeaderFooterView *vHeader; vHeader = [tableView dequeueReusableHeaderFooterViewWithIdentifier:header]; if (!vHeader) { vHeader = [[UITableViewHeaderFooterView alloc] initWithReuseIdentifier:header]; vHeader.textLabel.backgroundColor = [UIColor networkingColor]; } vHeader.textLabel.text = [self tableView:tableView titleForHeaderInSection:section]; return vHeader; } 

Si lo desea, puede incluso subclass UITableViewHeaderFooterView al igual que subclass UITableViewCell para personalizar aún más la apariencia.

simple y optimizado

 - (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section { // Background color view.tintColor = [UIColor whiteColor];//[UIColor colorWithRed:77.0/255.0 green:162.0/255.0 blue:217.0/255.0 alpha:1.0]; // Text Color UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view; [header.textLabel setTextColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"tableSection"]]]; } 

Implementación rápida de la respuesta de @codercat:

 override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) { view.tintColor = UIColor(networking: 0.967, green: 0.985, blue: 0.998, alpha: 1) // this example is a light blue, but of course it also works with UIColor.lightGrayColor() var header : UITableViewHeaderFooterView = view as UITableViewHeaderFooterView header.textLabel.textColor = UIColor.networkingColor() } 

Cree una cabecera personalizada por:

 -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UIView *viewHeader = [UIView.alloc initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 28)]; UILabel *lblTitle =[UILabel.alloc initWithFrame:CGRectMake(6, 3, 136, 21)]; [lblTitle setFont:[UIFont fontWithName:@"HelveticaNeue" size:13]]; //Font style [lblTitle setTextColor:[UIColor blackColor]]; [lblTitle setTextAlignment:NSTextAlignmentLeft]; [lblTitle setBackgroundColor:[UIColor clearColor]]; //Background [viewHeader addSubview:lblTitle]; return viewHeader; } 

Dele a esta label cualquier text; Sugiero hacer un NSArray por separado para títulos de encabezado.

Creo que en titleForHeaderInSection no puede cambiar las properties de vista de sección. Agregue a su proyecto viewForHeaderInSection y luego agregue vista personalizada personalizada con label, por ejemplo, vea esta sugerencia:

 - (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 0)] autorelease]; UILabel *label = [[[UILabel alloc] init] autorelease]; label.frame = CGRectMake(0, 0,300, TABLE_HEADER_HEIGHT); label.backgroundColor = [UIColor clearColor]; label.textColor = TABLE_HEADER_TITLE_COLOR; label.font = [UIFont fontWithName:FONT_NAME size:14.f]; label.text = [self tableView:tableView titleForHeaderInSection:section]; if (section == 3) { [headerView setBackgroundColor:[UIColor whiteColor]]; } else { [headerView setBackgroundColor:[UIColor networkingColor]]; } [headerView addSubview:label]; return headerView; } 

Puede configurar el título para la label según el número de sección.