He creado una costumbre UITableViewCell
. La vista de tabla muestra datos bien. En lo que estoy atascado es cuando el usuario toca la celda de la vista de tabla, luego quiero mostrar el color de fondo de la celda que no sean los valores predeterminados [color azul] para resaltar la selección de la celda. Yo uso este código pero no pasa nada:
cell.selectedBackgroundView.backgroundColor=[UIColor blackColor];
No hay necesidad de celdas personalizadas. Si solo desea cambiar el color seleccionado de la celda, puede hacer esto:
C objetivo:
Rápido:
fuente
El color de fondo de la selección de celda de Vista de tabla se puede configurar a través del Storyboard en Interface Builder:
fuente
Si tiene una tabla agrupada con solo una celda por sección, simplemente agregue esta línea adicional al código:
bgColorView.layer.cornerRadius = 10;
No olvides importar QuartzCore.
fuente
Swift 3: para mí funcionó cuando lo pones en el
cellForRowAtIndexPath:
métodofuente
awakeFromNib()
método (en el caso de una celda personalizada).Lo siguiente funciona para mí en iOS 8.
Tengo que establecer el estilo de selección en
UITableViewCellSelectionStyleDefault
para que funcione el color de fondo personalizado. Si hay otro estilo, se ignorará el color de fondo personalizado. Parece haber un cambio en los comportamientos ya que las respuestas anteriores deben establecer el estilo en ninguno.El código completo para la celda de la siguiente manera:
fuente
Cree una celda personalizada para la celda de su tabla y en la celda personalizada class.m ponga el código a continuación, funcionará bien. Debe colocar la imagen de color deseada en
selectionBackground
UIImage.fuente
Extensión Swift 3.0
cell.selectionColor = UIColor.FormaCar.blue
fuente
@IBInspectable
sobre la var si lo desea.@IBDesignable
No es útil para esto.Necesitamos establecer la vista de fondo seleccionada en este método.
fuente
Si desea agregar un color resaltado personalizado a su celda (y su celda contiene botones, etiquetas, imágenes, etc.), seguí los siguientes pasos:
Por ejemplo, si desea un color amarillo seleccionado:
1) Cree una vista que se ajuste a todas las celdas con un 20% de opacidad (con color amarillo) llamada, por ejemplo, backgroundselectedView
2) En el controlador de celda escriba esto:
fuente
En Swift 4, también puede establecer el color de fondo de la celda de su tabla globalmente (tomado de aquí ):
fuente
Si está utilizando un TableViewCell personalizado, también puede anular
awakeFromNib
:fuente
Un consejo más sobre la forma en que Christian muestra el fondo de la esquina redondeada para la tabla agrupada.
Si lo uso
cornerRadius = 10
para la celda, muestra el fondo de selección redondeado de cuatro esquinas. No es lo mismo con la interfaz de usuario predeterminada de la vista de tabla.Entonces, pienso en una manera fácil de resolverlo con cornerRadius . Como puede ver en los códigos a continuación, verifique la ubicación de la celda (superior, inferior, media o inferior) y agregue una subcapa más para ocultar la esquina superior o la esquina inferior. Esto solo muestra exactamente el mismo aspecto con el fondo de selección de la vista de tabla predeterminada.
Probé este código con iPad
splitterview
. Puede cambiar la posición del marco de patchLayer según lo necesite.Avíseme si hay una forma más fácil de lograr el mismo resultado.
fuente
Quiero señalar que el editor XIB le ofrece las siguientes opciones estándar:
Sección: azul / gris / ninguno
(la columna de la derecha con opciones, 4ta pestaña, primer grupo "Celda de vista de tabla", 4to subgrupo, el 1er de 3 elementos lee "Selección")
Probablemente lo que quiere hacer se puede lograr seleccionando la opción estándar correcta.
fuente
Según el color personalizado para una celda seleccionada
UITableView
, gran solución según la respuesta de Maciej SwicSolo para agregar a eso, declara la respuesta de Swic en la configuración de la celda generalmente en:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Y para un efecto adicional, en lugar de los colores del sistema, puede usar valores RGB para una apariencia de color personalizada. En mi código así es como lo logré:
Avísame si eso también funciona para ti. Puede jugar con el
cornerRadius
número de los efectos en las esquinas de la celda seleccionada.fuente
Tengo un enfoque ligeramente diferente al de todos los demás que refleja la selección al tacto en lugar de después de haber sido seleccionado. Tengo una UITableViewCell subclasificada. Todo lo que tiene que hacer es establecer el color de fondo en los eventos táctiles, que simula la selección al tacto, y luego establecer el color de fondo en la función setSelected. Establecer el color de fondo en la función selSelected permite deseleccionar la celda. Asegúrese de pasar el evento táctil al super, de lo contrario la celda no actuará como si estuviera seleccionada.
fuente
Para agregar el fondo para todas las celdas (usando la respuesta de Maciej):
fuente
Para anular
UITableViewCell
que estásetSelected
también funciona.fuente
para aquellos que solo quieren deshacerse del fondo gris seleccionado por defecto, coloque esta línea de código en su función cellForRowAtIndexPath:
fuente
para Swift 3.0:
fuente
Uso el siguiente enfoque y funciona bien para mí,
fuente
Swift 4+:
Agregue las siguientes líneas en la celda de su tabla
Finalmente debería ser como abajo
fuente
Aquí están las partes importantes del código necesarias para una tabla agrupada. Cuando se selecciona cualquiera de las celdas de una sección, la primera fila cambia de color. Sin establecer inicialmente el estilo de selección de celda en ninguno, se produce una recarga doble anónima cuando el usuario hace clic en la fila 0 donde la celda cambia a bgColorView, luego se desvanece y vuelve a cargar bgColorView nuevamente. Buena suerte y avíseme si hay una manera más simple de hacer esto.
fuente
En caso de clase de celda personalizada. Solo anular:
fuente
Es fácil cuando el estilo de vista de tabla es simple, pero en estilo grupal, es un pequeño problema, lo resuelvo de la siguiente manera:
noté el kGroupTableViewCellWidth, lo defino como 300, es el ancho del ancho de celda de la vista de tabla de grupo en iPhone
fuente
Asegúrese de haber usado la línea anterior para usar el efecto de selección
fuente
fuente
Estoy usando iOS 9.3 y configurar el color a través del Storyboard o la configuración
cell.selectionStyle
no funcionó para mí, pero el siguiente código funcionó:Encontré esta solución aquí .
fuente
Intenta seguir el código.
// Versión Swift:
fuente
Swift 4.x
Para cambiar el color de fondo de la selección a cualquier color, use la extensión Swift
Cree la extensión de celda UITableView como se muestra a continuación
Luego llame a removeCellSelectionColour () con instancia de celda.
fuente