2010-02-03 21 views
9

Imagínese una tabla ("StyleGrouped") con varias secciones:¿Cómo mezclar "vista (s) de encabezado de sección personalizada" y "encabezado (s) regular (es)" en un UITableViewController?

  • Algunas secciones deben tener un "título regular de cabecera".
  • Debe haber algunos botones, entre las "secciones regulares".

Intuitivamente, con el fin de definir los títulos de las secciones, me gustaría utilizar:

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

Y con el fin de simular los botones, me gustaría crear UIViews personalizados a través de:

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

El El problema es que para cuando empiezas a usar viewForHeaderInSection, entonces titleForHeaderInSection deja de funcionar ...

Tiene sentido someho w ya que ahora se supone que debemos proporcionar vistas de encabezado personalizadas. El único problema es que no hay forma de acceder al UIView original utilizado por UIKit para generar "títulos de encabezado normales" ...

No es el fin del mundo (es decir, crear su propio UILabel y simular el aspecto de UIKit & feel) pero me pregunto si me he perdido algo (?)

+1

Más tarde descubierto: parece que el problema no es "titleForHeaderInSection" que deja de funcionar cuando se usa "viewForHeaderInSection". Por el contrario, el problema es que debe devolver una altura adivinada para el "título del encabezado normal" a través de heightForHeaderInSection. HTH –

Respuesta

7

Parece que se llama a viewForHeaderInSection antes de titleForHeaderInSection. Sin embargo, si devuelve nil para una fila específica en la que no desea usar una vista, se llama al titleForHeaderInSection.

+0

Gracias por el esfuerzo, pero no está resolviendo completamente el problema. De todos modos, me ayudó a descubrir que la solución era devolver un valor codificado de 31 en (CGFloat) tableView: (UITableView *) tableView heightForHeaderInSection: (NSInteger) sección, siempre que se deba mostrar un "título de encabezado regular". –

+0

Corrección: la altura original de UIKIt es 36. Personalmente, todavía prefiero 31, ya que reduce el margen superior (sobredimensionado por defecto) ... –

Cuestiones relacionadas