2012-04-19 15 views

Respuesta

31

lo necesario para crear su propia vista de encabezamiento:

implementar dentro de su fuente de datos tableview/Delegado

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 
    NSString *sectionTitle = [self tableView:tableView titleForHeaderInSection:section]; 
    if (sectionTitle == nil) { 
     return nil; 
    } 

    // Create label with section title 
    UILabel *label = [[[UILabel alloc] init] autorelease]; 
    label.frame = CGRectMake(20, 6, 300, 30); 
    label.backgroundColor = [UIColor clearColor]; 
    label.textColor = [UIColor colorWithHue:(136.0/360.0) // Slightly bluish green 
           saturation:1.0 
           brightness:0.60 
             alpha:1.0]; 
    label.shadowColor = [UIColor whiteColor]; 
    label.shadowOffset = CGSizeMake(0.0, 1.0); 
    label.font = [UIFont boldSystemFontOfSize:16]; 
    label.text = sectionTitle; 

    // Create header view and add label as a subview 

    // you could also just return the label (instead of making a new view and adding the label as subview. With the view you have more flexibility to make a background color or different paddings 
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, SectionHeaderHeight)]; 
    [view autorelease]; 
    [view addSubview:label]; 

    return view; 
} 
+0

Puede devolver la etiqueta, no hay beneficio en agregarla como una subvista a una vista que de otro modo estaría vacía. – jrturton

+0

Sí, claro ... pero tal vez le gustaría cambiar el posicionamiento de su etiqueta o algo así ... –

+0

¡¡¡muchas gracias !!!. Cuando la etiqueta se devuelve directamente, la etiqueta NO se coloca en la posición X. 6. De acuerdo con mi comprensión, se devuelve siempre la vista, es 'frame.origin.x' y' frame.origin.y' se ignora. Entonces, cuando la etiqueta se agrega como una subvista a la vista y se devuelve la vista, entonces la etiqueta 'frame.origin.x' y' frame.origin.y' se conserva porque es relativa a su súper vista. – user1046037

14

Puede hacer esto también:

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section 
{ 
    [[((UITableViewHeaderFooterView*) view) textLabel] setTextColor:[UIColor whiteColor]]; 
} 

.....

+1

+ 1 esto es exactamente lo que estaba buscando, gracias – anneblue

+0

No funcionará en iOS 5. – Dmitry

+0

Funciona perfecto gracias – jose920405

1

Pude ver el encabezado solo un Después de agregar la altura para el encabezado junto con la vista

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ 
    return 110; 
} 
Cuestiones relacionadas