Pregunta ¿Por qué no funciona el color de fondo UITableViewCell (establecido en el constructor de interfaz)?


¿Por qué no funciona el color de fondo UITableViewCell (establecido en el constructor de interfaz)?

Observé por google que el código de seguimiento establecido en su subclase personalizada de UITableViewController funciona (ver a continuación):

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

Pero todavía me gustaría entender por qué el constructor de interfaz tiene una configuración de color de fondo para TableViewCell, que efectivamente no parece funcionar.

Gracias


55
2018-03-02 11:20


origen


Respuestas:


Es un poco tarde, pero acabo de encontrarme con este problema ... Establecer el color de fondo en contentView funciona bien:

cell.contentView.backgroundColor = [UIColor redColor];

69
2017-12-16 13:27



Lo que funcionó para mí es crear mi propio objeto UIView para establecer como la vista de fondo de UITableViewCell. En el cellForRowAtIndexPath:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
UIView* bgview = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
bgview.opaque = YES;
bgview.backgroundColor = [UIColor orangeColor];
[cell setBackgroundView:bgview];

16
2018-03-28 17:01



Intentar establecer el color de fondo de UITableViewCell no es la forma en que debería hacerlo. Una celda de tabla tiene una colección de cinco vistas útiles a las que puede acceder, una de las cuales es backgroundView.

Lectura recomendada:

http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html

y entonces:

http://cocoawithlove.com/2010/12/uitableview-construction-drawing-and.html


11
2018-03-02 12:06



Siempre debe proporcionar cambios para las celdas en tableView:willDisplayCell:forRowAtIndexPath: en vez de tableView:cellForRowAtIndexPath: método, según la documentación de Apple.

Esto funciona !!


7
2018-02-05 06:46



[cell.textLabel setBackgroundColor:[UIColor clearColor]];
[cell.contentView setBackgroundColor:[UIColor redColor]];

3
2017-12-13 11:29



Antes de definir un color de celda, asegúrese de backgroundView es nulo

cell.backgroundView = nil;
cell.backgroundColor = [UIColor redColor];

2
2017-12-01 15:23



Esto es simple y funciona: en el constructor de interfaces, agregue un objeto de vista a la UITableViewCell de las mismas dimensiones y coloque sus controles dentro de esa vista. Entonces obtienes el color de fondo que quieras.

Editar: aquí hay una razón para aceptar, me acabo de dar cuenta: eche un vistazo cuidadoso a lo que obtiene cuando hace doble clic en una UITableViewCell en IB que coloca en su plumilla, para comenzar a agregar cosas: no obtiene una En vista de un rectángulo simple, obtienes un rectángulo oval que dice claramente: Vista de contenido. Así que todo lo que puede hacer es establecer la vista de contenido de UITableViewCell en IB, y establecer la propiedad de color de fondo de la vista de contenido no produce el cambio de color en la tabla. Como dicen los documentos, UITableViewCells son bestias complejas con muchas partes y mucho detrás de escena en términos de UITableView ajustándolo y jugando con él.


1
2018-03-02 12:21



Funciona perfectamente, si elige la vista de tabla y establece el fondo, por ejemplo, rojo, toda la tabla será roja. tal vez no enlazaste la mesa o algo

Espero que haya ayudado


0
2018-03-02 11:52



(prueba esto)

El diseño del IB de Apple es genérico para aplicarse a múltiples tipos de componentes, y también está dirigido a una audiencia altamente técnica (desarrolladores). Por lo tanto, no se ha diseñado (como una aplicación) para personalizar completamente la interfaz correctamente para cada tipo de componente / situación. Entonces, en este caso, es el caso de la capacidad de establecer aparentemente el color de fondo que es algo engañoso.


0
2018-03-02 23:28



Y no, use setBackgroundColor

self.table.separatorColor=[UIColor whiteColor];
[table setBackgroundColor:[UIColor colorWithRed:.8 green:.8 blue:1 alpha:1]];

0
2018-03-03 18:25



Puedes hacer esto parcialmente en Interface Builder (probablemente añadido a Xcode recientemente):

  • Expanda la celda en el Esquema del documento del guión gráfico y seleccione "Vista de contenido"
  • Establecer el color de fondo de la Vista de contenido en el Inspector de atributos
  • Seleccione cada elemento de contenido en la celda y establezca los colores de fondo borrar ClearColor

Sin embargo, todavía no veo una forma de establecer el fondo accesorio.


0
2017-12-12 18:46