jun 13

Cuando trabajamos con tablas (UITableView), podemos crear celdas personalizadas a través de Interface Builder o crearlas directamente desde el código, el problem aparece cuando cambiamos el color de fondo por otro que no sea blanco y sólo creamos la celda cuando vamos a mostrar datos, pero no hacemos nada para las celdas vacías.

Nos encontramos con algo como esto

Esto nos pasa porque sólo creamos la celda con fondo cuando tenemos datos para rellenar, tenemos dos opciones para solucionarlo:

  • Programar nuestro código de forma que cuando rellenamos la tabla se consideren los casos en que no hay datos, es decir cargar una celda pero sin las etiquetas o imágenes.
  • Poner a todas las celdas el mismo color de fondo antes de mirar nada.

Con esta segunda opción, es la más rápida, podemos darle el mismo color a todas las celdas, la única manera de hacerlo sin crearnos una celda personalizada, sin nada más que el fondo para celdas vacías desde Interface Builder, es hacerlo dentro del código:

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
 
    static NSString *CellIdentifier = @"Cell";
 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
 
    // Configure the cell.
    [[cell contentView] setBackgroundColor:[UIColor colorWithRed:0 green:128/255.f blue:0 alpha:1]];    
    return cell;
}

La linea que nos interesa es la que llama al método setBackgroundColor:, con esta linea es la que le damos el color que queremos. Daros cuanta de que usamos [cell contentView], tenemos que cambiar el color de la contentView, esta es la clave de que no se pueda hacer desde Interface Builder directamente cuando añadimos una tabla, desde la tabla no podemos acceder al contenido de la celda sin añadir explicitamente las celdas.

Con esa linea obtendremos algo cómo esto

VN:F [1.9.8_1114]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.8_1114]
Rating: 0 (from 0 votes)
Color de fondo de celdas vacías, 5.0 out of 5 based on 1 rating

2 Responses to “Color de fondo de celdas vacías”

  1. Jorge Jorge dice:

    I have tried to do this but it only fills with the color those tableviewcells with data …. the other are in blank. I do not have a tab bar only a simple table view fill with data via code.

    VA:F [1.9.8_1114]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.8_1114]
    Rating: 0 (from 0 votes)
  2. Marcos Marcos dice:

    Hi Jorge,

    an easier solution I found later on is setting the color for the table background.

    Try to add this line to your viewWillAppear: in the TableViewController

    [[self tableView] setBackgroundColor:[UIColor colorWithRed:0 green:128/255.f blue:0 alpha:1]];

    VA:F [1.9.8_1114]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.8_1114]
    Rating: 0 (from 0 votes)

Leave a Reply

*
preload preload preload