2011-10-17 17 views
6

¿Por qué configurar el color UITableViewCell funciona en willDisplayCell pero no en cellForRowAtIndexPath?¿Por qué configurar el color de una UITableViewCell funciona en "willDisplayCell" pero no en "cellForRowAtIndexPath"?

Notas:

  1. Estoy usando este código para establecer el color de fondo de una celda: [cell setBackgroundColor:[UIColor yellowColor]];
  2. obras cuando lo pongo en el método - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
  3. no funciona si pongo en - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+1

¿Puedes publicar tus implementaciones de 'tableView: willDisplayCell: forRowAtIndexPath:' y 'tableView: cellForRowAtIndexPath:'? – titaniumdecoy

Respuesta

7

el mana de UITableViewCell afirma que es necesario hacerlo en willDisplayCell: (extracto de la clase refere UITableViewCell a continuación). Sospecho que debido a que las celdas de la tabla tienen una vista de contenido y varios otros componentes que parecen ser 'administrados' por UIKit, está haciendo lo suyo con el color de fondo después de establecerse en cellForRowAtIndexPath. También puede usar la propiedad 'backgroundView' de una celda de vista de tabla para controlar su fondo.

documentación extracto:

Nota: Si desea cambiar el color de fondo de una celda (ajustando el color de fondo de una celda a través de la propiedad backgroundColor declarado por UIView) hay que hacerlo en el tableView: willDisplayCell: forRowAtIndexPath: método del delegado y no en tableView: cellForRowAtIndexPath: del origen de datos. Los cambios en los colores de fondo de las celdas en una vista de tabla de estilo grupal tienen un efecto en iOS 3.0 que es diferente de las versiones anteriores del sistema operativo. Ahora afecta el área dentro del rectángulo redondeado en lugar del área exterior.

Cuestiones relacionadas