2012-08-16 9 views
27

Tengo una UITableView estática y todo está dispuesto en el guión gráfico. En cellForRowAtIndexPath simplemente usoUITableView con celdas estáticas sin cellForRowAtIndexPath. Cómo establecer un fondo claro?

return [super tableView:tableView cellForRowAtIndexPath:indexPath]; 

y la tableview funciona muy bien. Sin embargo, quiero establecer los fondos de las celdas en [UIColor clearColor] ¿Cómo puedo hacer esto? La tabla tiene 30 celdas, cada una diferente.

Gracias

Respuesta

56

No estoy del todo seguro de si esto va a funcionar, porque nunca he intentado usar super para administrar las células. Si el código funciona con super, entonces usted debería ser capaz de salirse con hacer esto para establecer el color de fondo:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = [super tableView:tableView cellForRowAtIndexPath:indexPath]; 
    cell.backgroundColor = [UIColor clearColor]; 
    return cell; 
} 

De cualquier manera, esto me parece como una extraña manera de hacer las cosas. Normalmente, las celdas se crean y reutilizan en el método en sí, según el código de boil de UITableView predeterminado, sin llamar al super.

+2

Gracias, esto funcionó muy bien. Como la tabla es muy larga y cada celda es completamente diferente y estática, me resultó más fácil simplemente configurarlas en Storyboard y crear IBOutlet para todos los UILabels que necesitaban datos. – Darren

+0

@Jonathan gracias –

+0

Gracias! ¡Salvaste el día! –

1

Puede configurar un método y lo llaman en su viewDidLoad con el fin de obtener todas las células y hacer lo que quiera con ellos se puede utilizar esto:

NSArray *visibleIndexPaths = [self.tableView indexPathsForVisibleRows]; 

para obtener todos los caminos de índice de las células actualmente visibles

iterar sobre ellos de la siguiente manera

UITableViewCell *cell = nil; 
for (int i = 0; i < 30; i++) { 
    cell = [self.tableView cellForRowAtIndexPath:[visibleIndexPaths objectAtIndex:i]]; 
    // Do your setup 
} 

También puede hacer referencia a la parte this Apple developer document "La técnica para estático contenido de fila"

+0

Este método no funcionó, pero gracias por la respuesta. – Darren

+0

No hay problema, ahora puedo refactorizar mi código para ser mejor – 8vius

17

probar este método delegado:

- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
cell.backgroundColor = [UIColor clearColor]; 
} 
+0

Este método funcionó, gracias. Sin embargo, seleccioné la respuesta de Jon como la correcta ya que parecía el lugar correcto para establecer la celda. Gracias – Darren

+1

La respuesta aceptada funciona pero es innecesariamente prolija y compleja. 'willDisplayCell:' es mucho más sencillo y perfecto para el caso de uso. –

Cuestiones relacionadas