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.

neha
fuente

Respuestas:

321
cell.selectionStyle = UITableViewCellSelectionStyleNone;

en Swift 4 actualizado

cell.selectionStyle = UITableViewCell.SelectionStyle.none

O

cell.selectionStyle = .none
Vladimir
fuente
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í

Miguel
fuente
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
Joey Wong
fuente
5
O puede usar el valor de enumeración directamente cell.selectionStyle = .None
Steve
11

Swift 3.0

cell.selectionStyle = .none
Rashwan L
fuente
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

Frantiesco Masutti
fuente
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

Lynchspin
fuente
4

Prueba esto rápido

cell?.selectionStyle = UITableViewCellSelectionStyle.None
Jugal K Balara
fuente
2

Hazlo en la celda :

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

    ...
}

Es fácil.

Fattie
fuente
0

rápido 5

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

        return cell
    }  
Zgpeace
fuente
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ó.

anr
fuente