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];

22voto

samwize Punkte 23381

Das Folgende funktioniert bei mir unter iOS 8.

Ich muss den Auswahlstil auf UITableViewCellSelectionStyleDefault damit die benutzerdefinierte Hintergrundfarbe funktioniert. Wenn ein anderer Stil, wird die benutzerdefinierte Hintergrundfarbe ignoriert werden. Es scheint eine Änderung im Verhalten zu geben, da frühere Antworten stattdessen den Stil auf none setzen müssen.

Der vollständige Code für die Zelle lautet wie folgt:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"MyCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    // This is how you change the background color
    cell.selectionStyle = UITableViewCellSelectionStyleDefault;
    UIView *bgColorView = [[UIView alloc] init];
    bgColorView.backgroundColor = [UIColor redColor];
    [cell setSelectedBackgroundView:bgColorView];        
    return cell;
}

18voto

rajesh Punkte 592

Erstellen Sie eine benutzerdefinierte Zelle für Ihre Tabelle Zelle und in der benutzerdefinierten Zelle class.m setzen den Code unten, es wird gut funktionieren. Sie müssen das gewünschte Farbbild in selectionBackground UIImage.

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    UIImage *selectionBackground = [UIImage imageNamed:@"yellow_bar.png"];
    UIImageView *iview=[[UIImageView alloc] initWithImage:selectionBackground];
    self.selectedBackgroundView=iview;
}

14voto

Nike Kov Punkte 11508

Swift 3.0 Erweiterung

extension UITableViewCell {
    var selectionColor: UIColor {
        set {
            let view = UIView()
            view.backgroundColor = newValue
            self.selectedBackgroundView = view
        }
        get {
            return self.selectedBackgroundView?.backgroundColor ?? UIColor.clear
        }
    }
}

cell.selectionColor = UIColor.FormaCar.blue

10voto

sundance Punkte 2744

In Swift 4 können Sie auch die Hintergrundfarbe Ihrer Tabellenzelle global einstellen (aus aquí ):

let backgroundColorView = UIView()
backgroundColorView.backgroundColor = UIColor.red
UITableViewCell.appearance().selectedBackgroundView = backgroundColorView

9voto

Rajesh Loganathan Punkte 10855

Swift 4+:

Fügen Sie folgende Zeilen in Ihr Tabellenzelle

let bgColorView = UIView()
bgColorView.backgroundColor =  .red
self.selectedBackgroundView = bgColorView

Schließlich sollte es wie folgt aussehen

override func setSelected(_ selected: Bool, animated: Bool)
    {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
        let bgColorView = UIView()
        bgColorView.backgroundColor =  .red
        self.selectedBackgroundView = bgColorView

    }

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