Entfernen Sie die Zellenmarkierungsfarbe von UITableView

109

Ich möchte die standardmäßige blaue Farbe der Zellenauswahl von uitableview entfernen. Ich möchte dort keine Auswahlfarbe. Ich habe keine benutzerdefinierte Zellenklasse erstellt. Ich passe die Zelle an, indem ich Beschriftungen und Schaltflächen darüber hinzufüge. Ich habe versucht:

cell.selectioncolor = [UIColor clearcolor];

aber es heißt, dass diese Methode veraltet ist.

neha
quelle

Antworten:

319
cell.selectionStyle = UITableViewCellSelectionStyleNone;

in Swift 4 aktualisiert

cell.selectionStyle = UITableViewCell.SelectionStyle.none

Oder

cell.selectionStyle = .none
Vladimir
quelle
3
Ich habe diesen Code in cellForRowAtIndexPath: behalten. Ist das der genaue Ort, an dem er aufbewahrt werden soll?
Pawriwes
9
@ Pawriwes, ja. Wenn ich mich richtig erinnere, können Sie diese Eigenschaft auch in XIB der Zelle festlegen, wenn Sie Ihre Zelle mit Interface Builder
Vladimir
4
Wenn ich dies tue, wähle ich beim Bearbeiten nicht die Zelle aus :(
AsifHabib
54

Wählen Sie dies in StoryboardoderXIB


Geben Sie hier die Bildbeschreibung ein

Michael
quelle
7
zusätzliche, müssen Sie „Table View überprüfen Zelle “ , wenn Sie in „Tabellenansicht“ ändern , als Sie keine Zellen auszuwählen.
Kernelzero
2
@Pulkit das ist nicht wahr. Dadurch wird nur der Auswahlstatus der Zelle deaktiviert. Dies hat nichts mit den darin angezeigten Daten oder der Interaktion zu tun. Stellen Sie sicher, dass Sie alle richtigen Registrierungssätze festgelegt haben und andere Funktionen nicht überschreiben.
Michael
das ist völlig falsch
Fattie
12
// Swift 2.0

cell.selectionStyle = UITableViewCellSelectionStyle.None
Joey Wong
quelle
5
Oder Sie können den Aufzählungswert direkt verwenden cell.selectionStyle = .None
Steve
11

Swift 3.0

cell.selectionStyle = .none
Rashwan L.
quelle
6

Ziel c:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

oder

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

Swift 4:

self.selectionStyle = UITableViewCellSelectionStyle.none;

Swift 3:

cell.selectionStyle = .none

Swift 2:

cell.selectionStyle = UITableViewCellSelectionStyle.None

Wenn Sie es nur mit Storyboard / Xib ändern möchten, wählen Sie einfach die Zelle aus, in der Sie den "Auswahlstil-Effekt" entfernen möchten, und definieren Sie sie als "Keine". Es wird auch wie Magie funktionieren: D.

Storyboard / Xib

Frantiesco Masutti
quelle
1
Swift 4: cell.selectionStyle = UITableViewCell.SelectionStyle.none
Naval Hasan
5

Das Festlegen des TableView-Auswahlstils auf .nonebeeinträchtigte die Reaktionsfähigkeit und Leistung der Tabellenansicht in meiner App (das didSelectRowAt indexPathTippen wurde verzögert). Meine Lösung für dieses Problem bestand darin, die ausgewählte Hintergrundansicht awakeFromNib()beim ersten Erstellen der Zelle auszublenden :

selectedBackgroundView?.isHidden = true

Lynchspin
quelle
4

Versuchen Sie dies für schnell

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

Mach es in der Zelle :

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

    ...
}

So einfach ist das.

Fattie
quelle
0

schnell 5

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

        return cell
    }  
Zgpeace
quelle
0

Die richtige Antwort sollte lauten:

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

Der Auswahltyp ist eine andere Eigenschaft, die bei Einstellung auf .nonedas, was Sie möchten, sowie andere unerwünschte Nebenwirkungen erzeugt.

Wenn Sie nicht möchten, dass die Zelle hervorgehoben wird , stellen Sie die Farbe der Hintergrundansicht so ein, wie wenn sie nicht hervorgehoben ist.

anr
quelle