Rimuovere il colore di evidenziazione della cella di UITableView


110

Voglio rimuovere il colore blu predefinito della selezione delle celle di uitableview. Non voglio alcun colore di selezione lì. Non ho creato una classe di celle personalizzata. Sto personalizzando la cella aggiungendo etichette e pulsanti su di essa. Ho provato a fare:

cell.selectioncolor = [UIColor clearcolor];

ma dice che questo metodo è deprecato.

Risposte:


322
cell.selectionStyle = UITableViewCellSelectionStyleNone;

in Swift 4 aggiornato

cell.selectionStyle = UITableViewCell.SelectionStyle.none

O

cell.selectionStyle = .none

3
Ho mantenuto quel codice in cellForRowAtIndexPath :, è quello il posto esatto da tenere?
Pawriwes

9
@Pawriwes, sì. Se ricordo bene puoi anche impostare quella proprietà nello XIB della cella se crei la tua cella usando Interface Builder
Vladimir

4
Se lo faccio, durante la modifica, non seleziona la cella :(
AsifHabib

54

Seleziona questo in StoryboardoXIB


inserisci qui la descrizione dell'immagine


7
inoltre, devi controllare " Cella vista tabella " se cambi in "vista tabella" rispetto a quando non selezioni celle.
Kernelzero

2
@ Pulkit che non è vero. Ciò disabiliterà solo lo stato di selezione della cella. Questo non ha nulla a che fare con i dati visualizzati o con la gestione della sua interazione. Verificare di disporre di tutte le impostazioni di registrazione corrette e di non sovrascrivere altre funzioni.
Michael

questo è completamente sbagliato
Fattie

12
// Swift 2.0

cell.selectionStyle = UITableViewCellSelectionStyle.None

5
Oppure puoi usare il valore enum direttamente cell.selectionStyle = .None
Steve


6

Objective-C:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

o

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

Swift 4:

self.selectionStyle = UITableViewCellSelectionStyle.none;

Swift 3:

cell.selectionStyle = .none

Swift 2:

cell.selectionStyle = UITableViewCellSelectionStyle.None

Se vuoi cambiarlo semplicemente usando Storyboard / Xib, seleziona semplicemente la Cella da cui vuoi rimuovere l '"Effetto Stile Selezione" e definiscila come "Nessuno". Funzionerà anche come per magia: D

Storyboard / Xib


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

5

L'impostazione dello stile di selezione TableView su .noneinfluiva sulla reattività e sulle prestazioni della tableview nella mia app (i didSelectRowAt indexPathtocchi venivano ritardati). La mia soluzione a questo problema era nascondere la visualizzazione di sfondo selezionata awakeFromNib()quando la cella viene creata per la prima volta:

selectedBackgroundView?.isHidden = true


4

Prova questo per un rapido

cell?.selectionStyle = UITableViewCellSelectionStyle.None

2

Fallo nella cella :

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

    ...
}

È così facile.


0

rapido 5

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

        return cell
    }  

0

la risposta giusta dovrebbe essere:

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

Il tipo di selezione è una proprietà diversa che, se impostata su, .noneproduce ciò che desideri PIÙ altri effetti collaterali indesiderati.

Se non si desidera che la cella da evidenziare , quindi fare il colore del suo sfondo vista la stessa di quando si è non è evidenziato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.