2009-06-03 10 views
5

Para un iPhone, tengo una UITableView que está agrupada, tiene una sección y en la que he configurado un encabezado de sección que es un objeto UILabel del plumín. Cuando se muestra la vista de tabla, el encabezado aparece como una franja de negro sólido, sin texto.El encabezado de la sección UITableView es todo negro

En heightForHeaderInSection He establecido la altura para ser el frame.size.height del objeto UILabel. Cuando cambio la altura en IB, la altura de la franja negra cambia. Entonces sé que el archivo .m se ha aferrado al objeto UILabel correcto.

En el depurador, en viewForHeaderInSection, parece que el ancho del objeto UILabel es cero, y la altura es 1079574528, y el texto es nulo.

¿Alguna idea de lo que estoy haciendo mal?

Respuesta

0

Se puede publicar el código para su heightForHeaderInSection y sus viewForHeaderInSection funciones? La teoría detrás de lo que estás haciendo suena correcta, pero sin ver el código, sería casi imposible resolver el problema ...

Parece que colocas una etiqueta en la vista en IB y estás intentando utilícelo como su vista de encabezado, que no es la forma correcta de hacer las cosas. Si no está utilizando viewForHeaderInSection, a continuación, dar una oportunidad .. que de esta manera:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UILabel *lbl; 
    lbl.text = @"Header for The Only Section"; 
    //define other properties for the label - font, shadow, highlight, etc... 

    return lbl; 
} 
+2

Eso no funcionará, porque no ha inicializado la etiqueta. Necesita '[[UILabel alloc] initWithFrame: someFrame]'. Luego, puede establecer su propiedad 'text'. –

25

No está seguro de lo que estás haciendo mal, pero aquí hay un código de ejemplo que podría ayudar a (de un post en mi blog):

#define SectionHeaderHeight 40 


- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { 
    if ([self tableView:tableView titleForHeaderInSection:section] != nil) { 
     return SectionHeaderHeight; 
    } 
    else { 
     // If no section header title, no section header needed 
     return 0; 
    } 
} 


- (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 
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, SectionHeaderHeight)]; 
    [view autorelease]; 
    [view addSubview:label]; 

    return view; 
} 
+0

Tengo el problema de la "barra" negra, pero SÓLO cuando cambio al modo horizontal y no se corrige cuando vuelvo al retrato. La única forma que he encontrado para "arreglar" esto es llamando a reloadData en la tabla, pero este es un método MUY pesado para llamar para arreglar algo así de pequeño ... – kdbdallas

+1

palabras no pueden expresar cuánto tiempo me ha salvado la muestra del código:) **¡¡¡¡gracias!!!! –

1

yo tenía el mismo problema y no han calculado absolutamente la razón por la barra de negro ..

Pero, en lugar de proporcionar los puntos de vista de encabezado y pie en los métodos de delegado, si fijo val ues para tableView.tableHeaderView y tableView.tableFooterView, todo está bien!

+0

Funcionó para mí. Mi encabezado era transparente y en la parte superior de las filas. – casey

0

3.1.3 no me gusta [UIColor clearColor]; intente utilizar el mismo color de fondo que su tabla de vista

0

Observé el mismo comportamiento al actualizar después de que se carga la fuente de datos. Noté que esto se debía a la forma en que estaba refrescando la vista de tabla.

//[self loadView]; this caused the section header to go black. 
[self.tableView reloadData]; // this works! 
Cuestiones relacionadas