345 Stimmen

UITableView Zelle ausgewählt Farbe?

Ich habe eine benutzerdefinierte UITableViewCell . In der Tabellenansicht werden die Daten gut angezeigt. Was ich bin in stecken, ist, wenn Benutzer Zelle der tableview berührt, dann möchte ich die Hintergrundfarbe der Zelle andere als die Standardwerte [blaue Farbe] für die Hervorhebung der Auswahl der Zelle zu zeigen. Ich verwende diesen Code, aber nichts passiert:

cell.selectedBackgroundView.backgroundColor=[UIColor blackColor];

706voto

Maciej Swic Punkte 10647

Benutzerdefinierte Zellen sind nicht erforderlich. Wenn Sie nur die ausgewählte Farbe der Zelle ändern möchten, können Sie dies tun:

Objektiv-C:

UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor = [UIColor redColor];
[cell setSelectedBackgroundView:bgColorView];

Schnell:

let bgColorView = UIView()
bgColorView.backgroundColor = UIColor.red
cell.selectedBackgroundView = bgColorView

388voto

Andrew Little Punkte 6591

Ich denke, Sie waren auf der richtigen Spur, aber laut der Klassendefinition für selectedBackgroundView :

Der Standardwert ist nil für Zellen in Tabellen im einfachen Stil (UITableViewStylePlain) und non-nil für Tabellen mit Abschnittsgruppen (UITableViewStyleGrouped).

Wenn Sie also eine einfache Tabelle verwenden, müssen Sie eine neue All-init-Tabelle UIView mit der gewünschten Hintergrundfarbe und weisen Sie sie dann selectedBackgroundView .

Alternativ können Sie auch verwenden:

cell.selectionStyle = UITableViewCellSelectionStyleGray;

wenn Sie nur einen grauen Hintergrund haben wollen, wenn die Zelle ausgewählt ist. Ich hoffe, das hilft.

52voto

pkamb Punkte 30154

Die Hintergrundfarbe der Zellenauswahl in der Tabellenansicht kann über das Storyboard im Interface Builder eingestellt werden:

table view cell selection color None

37voto

Christian Fritz Punkte 395

Wenn Sie eine gruppierte Tabelle mit nur einer Zelle pro Abschnitt haben, fügen Sie einfach diese zusätzliche Zeile in den Code ein: bgColorView.layer.cornerRadius = 10;

UIView *bgColorView = [[UIView alloc] init];
[bgColorView setBackgroundColor:[UIColor redColor]];
bgColorView.layer.cornerRadius = 10;
[cell setSelectedBackgroundView:bgColorView];
[bgColorView release]; 

Vergessen Sie nicht, QuartzCore zu importieren.

34voto

phitsch Punkte 735

Swift 3: bei mir hat es funktioniert, wenn man es in die cellForRowAtIndexPath: Methode

let view = UIView()
view.backgroundColor = UIColor.red
cell.selectedBackgroundView = view

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X