Eliminar el color de resaltado de celda de UITableView


110

Quiero eliminar el color azul predeterminado de la selección de celdas de uitableview. No quiero ningún color de selección allí. No he creado una clase de celda personalizada. Estoy personalizando la celda agregando etiquetas y botones sobre ella. Intenté hacer:

cell.selectioncolor = [UIColor clearcolor];

pero dice que este método está en desuso.

Respuestas:


321
cell.selectionStyle = UITableViewCellSelectionStyleNone;

en Swift 4 actualizado

cell.selectionStyle = UITableViewCell.SelectionStyle.none

O

cell.selectionStyle = .none

3
Mantuve ese código en cellForRowAtIndexPath :, ¿es ese el lugar exacto para guardar?
Pawriwes

9
@Pawriwes, sí. Si mal no recuerdo, también puede establecer esa propiedad en el XIB de la celda si crea su celda usando Interface Builder
Vladimir

4
Si lo hago, al editar, no selecciono la celda :(
AsifHabib

54

Seleccione esto en StoryboardoXIB


ingrese la descripción de la imagen aquí


7
Además, debe marcar " Celda de vista de tabla " si cambia en "vista de tabla" que no selecciona celdas.
Kernelzero

2
@Pulkit eso no es cierto. Esto solo deshabilitará el estado de selección de la celda. Esto no tiene nada que ver con los datos que se muestran en él o con el manejo de su interacción. Verifique para asegurarse de que tiene todo el registro adecuado y no está anulando otras funciones.
Michael

esto está completamente mal
Fattie

12
// Swift 2.0

cell.selectionStyle = UITableViewCellSelectionStyle.None

5
O puede usar el valor de enumeración directamente cell.selectionStyle = .None
Steve


6

C objetivo:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

o

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

Rápido 4:

self.selectionStyle = UITableViewCellSelectionStyle.none;

Swift 3:

cell.selectionStyle = .none

Rápido 2:

cell.selectionStyle = UITableViewCellSelectionStyle.None

Si desea cambiarlo simplemente usando Storyboard / Xib, simplemente seleccione la celda a la que desea eliminar el "Efecto de estilo de selección" y defínalo como "Ninguno". También funcionará como magia: D

Storyboard / Xib


1
Swift 4: cell.selectionStyle = UITableViewCell.SelectionStyle.none
Naval Hasan

5

Establecer el estilo de selección de TableView en .noneestaba afectando la capacidad de respuesta y el rendimiento de la vista de tabla en mi aplicación (los toques didSelectRowAt indexPathse retrasaron). Mi solución a este problema fue ocultar la vista de fondo seleccionada awakeFromNib()cuando se crea la celda por primera vez:

selectedBackgroundView?.isHidden = true



2

Hazlo en la celda :

class YourCell:  UITableViewCell {
    
    override func didMoveToSuperview() {
        selectionStyle = .none
    }

    ...
}

Es fácil.


0

rápido 5

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
        cell.selectionStyle = .none

        return cell
    }  

0

la respuesta correcta debería ser:

cell.selectedBackgroundView?.backgroundColor = <choose your color>

El tipo de selección es una propiedad diferente que cuando se establece en .noneproduce lo que desea MÁS otros efectos secundarios no deseados.

Si no desea que la celda que se puso de relieve , a continuación, hacer que el color de su opinión del fondo lo mismo que cuando se no se destacó.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.