uitableviewcontroller example ejemplo iphone ios uitableview

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



uitableview swift 4 programmatically (14)

(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.

¿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


Antes de definir un color de celda, asegúrese de que su vista de backgroundView sea ​​nula

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


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

cell.contentView.backgroundColor = [UIColor redColor];


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.


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



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];


Obtuve este problema también. En IB, tiene la capacidad de cambiar el color de fondo de la celda al elegir la celda. Esto no es correcto. Debería ir al bosquejo del documento a la izquierda del guión gráfico y elegir la vista de contenido dentro de la celda. Cambiar el fondo de la vista de contenido. Ahora debería obtener el color de celda correcto.


Prueba esto, funciona para mí:

- (void)tableView:(UITableView *)tableView1 willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { [cell setBackgroundColor:[UIColor clearColor]]; tableView1.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"Cream.jpg"]]; }


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 en ClearColor

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


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

Esto funciona !!


Y no, use setBackgroundColor

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


-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{ UIView *view = [[UIView alloc] init]; [view setBackgroundColor:[UIColor redColor]]; [cell setSelectedBackgroundView:view];}

Necesitamos cambiar el color en este método.


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