Deaktivieren Sie die Hervorhebung von uitableview, erlauben Sie jedoch die Auswahl einzelner Zellen


83

Wenn Sie auf eine Zelle tippen, wird die Zeile ausgewählt und hervorgehoben. Jetzt möchte ich die Hervorhebung deaktivieren, aber die Auswahl zulassen. Gibt es einen Weg, dies zu umgehen. Es gibt eine Frage, die dies beantwortet, aber sowohl die Auswahl als auch die Hervorhebung deaktiviert.


8
cell.selectionStyle = UITableViewCellSelectionStyleNone;Fügen Sie dies in Ihre cellForRowAtIndexPathMethode ein
Shruti

Antworten:


179

Sie können den Auswahlstil der Zelle im Storyboard einfach auf "Keine" setzen:

Siehe hier

Oder aus dem Code:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

Für Swift 3:

cell.selectionStyle = UITableViewCellSelectionStyle.none

Für Swift 4 und höher:

cell.selectionStyle = .none

Wenn ich "keine" wähle, verliere ich die Fähigkeit, mit hervorgehobenem Zustand zu arbeiten. Kann ich den Hintergrund nicht / weiß machen, ohne diesen Zustand zu verlieren?
Sean

In welche Funktion würde das gehen? Ich vermute "cellForRowAt"?
Daniel Springer

Sie sollten es in der Zelle tun, nicht in der Tabellenansicht
Salem Binmusaed

26

Ändern Sie UITableViewCelldie selectedBackgroundViewFarbe in transparent.

    let clearView = UIView()
    clearView.backgroundColor = UIColor.clearColor() // Whatever color you like
    UITableViewCell.appearance().selectedBackgroundView = clearView

oder für eine bestimmte Zelle festlegen:

cell.backgroundView = clearView


1
Dies ist die beste Option, da cell.selectionStyle = UITableViewCellSelectionStyleNonemanchmal etwas tief in Apples Animationslogik bricht.
Orkenstein

dann benutze stattdessen ..UITableViewCell.appearance().selectionStyle = .None
Vaibhav

Dies ist hilfreich, wenn Sie auswählbare Elemente in der Zelle haben.
Matthew Korporaal

Hervorragende Lösung. Das Einfügen dieses Codes in die awakeFromNib()Funktion der Zelle ist ein Vergnügen
Dan2899

Mit dieser Option wird die Zellentrennlinie der Tabellenansicht nicht angezeigt.
jonye ._. Jin

8

Versuchen Sie, den Zellenauswahlstil auf Keine zu setzen.

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

Dies wird Ihr Problem lösen


8

Für Swift 3.0 :

cell.selectionStyle = .none

6

Für Swift:

UITableViewCell.selectionStyle = UITableViewCellSelectionStyle.None;

Oder wenn Sie eine Zelle schnell unterordnen:

class CustomCell : UITableViewCell {

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)!
        selectionStyle = .None
    }

}

5

in schnell 3

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: true)
}

2

Verwenden Sie den folgenden Code, um eine benutzerdefinierte Farbe hinzuzufügen. Und um es transparent zu machenalpha: 0.0

cell.selectedBackgroundView = UIView(frame: CGRect.zero)
cell.selectedBackgroundView?.backgroundColor = UIColor(red:0.27, green:0.71, blue:0.73, alpha:1.0)

Wenn Sie eine benutzerdefinierte Farbe verwenden und diese mit abgerundeten Ecken versehen möchten, verwenden Sie:

cell.layer.cornerRadius = 8

Verwenden Sie dies auch für eine bessere Animation und ein besseres Gefühl

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    tableView.deselectRow(at: indexPath, animated: true)
}

1

Für diejenigen, die einen programmatischen Weg in Swift 3 suchen

cell.selectionStyle = UITableViewCellSelectionStyle.none


1

Sie können die Auswahleigenschaft der Zelle selbst im Storyboard festlegen Geben Sie hier die Bildbeschreibung ein


0

Für Objc:

[cell setSelectionStyle: UITableViewCellSelectionStyleNone];

- (void)viewDidLoad {
  [super viewDidLoad];
  _tableView.allowsSelection = YES;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    .. .. .. .. 
   [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
   . . . . .. 
}


-1

Hier ist die Lösung für Swift 3, funktioniert auch im Bearbeitungsmodus

cell.selectionStyle = .gray
cell.selectedBackgroundView = {

    let colorView = UIView()
    colorView.backgroundColor = UIColor.black.withAlphaComponent(0.0)
    //change the alpha value or color to match with you UI/UX

    return colorView
}()
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.