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

2voto

Wilson Punkte 8758

Für Swift 3.0:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let cell = super.tableView(tableView, cellForRowAt: indexPath)

    cell.contentView.backgroundColor = UIColor.red
}

2voto

Paul Lehn Punkte 2912

Für diejenigen, die nur den standardmäßig ausgewählten grauen Hintergrund loswerden wollen, fügen Sie diese Codezeile in Ihre cellForRowAtIndexPath-Funktion ein:

yourCell.selectionStyle = .None

2voto

Stephen Donnell Punkte 810

Ich habe einen etwas anderen Ansatz als alle anderen, der die Auswahl bei der Berührung und nicht erst nach der Auswahl berücksichtigt. Ich habe eine subclassed UITableViewCell. Alles, was Sie tun müssen, ist die Hintergrundfarbe in den Touch-Ereignissen zu setzen, die die Auswahl bei Berührung simuliert, und dann die Hintergrundfarbe in der setSelected-Funktion zu setzen. Das Setzen der Hintergrundfarbe in der selSelected-Funktion ermöglicht das Abwählen der Zelle. Stellen Sie sicher, dass Sie das Berührungsereignis an die Superfunktion weitergeben, da sich die Zelle sonst nicht wirklich so verhält, als wäre sie ausgewählt.

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    self.backgroundColor = UIColor(white: 0.0, alpha: 0.1)
    super.touchesBegan(touches, withEvent: event)
}

override func touchesCancelled(touches: NSSet!, withEvent event: UIEvent!) {
    self.backgroundColor = UIColor.clearColor()
    super.touchesCancelled(touches, withEvent: event)
}

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

    // Configure the view for the selected state
    self.backgroundColor = selected ? UIColor(white: 0.0, alpha: 0.1) : UIColor.clearColor()
}

1voto

Ranjan Punkte 95
override func setSelected(selected: Bool, animated: Bool) {
    // Configure the view for the selected state

    super.setSelected(selected, animated: animated)
    let selView = UIView()

    selView.backgroundColor = UIColor( red: 5/255, green: 159/255, blue:223/255, alpha: 1.0 )
    self.selectedBackgroundView = selView
}

1voto

Lal Krishna Punkte 13960

Im Falle einer benutzerdefinierten Zellenklasse. Einfach überschreiben:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state

    if (selected) {
        [self setBackgroundColor: CELL_SELECTED_BG_COLOR];
        [self.contentView setBackgroundColor: CELL_SELECTED_BG_COLOR];
    }else{
        [self setBackgroundColor: [UIColor clearColor]];
        [self.contentView setBackgroundColor: [UIColor clearColor]];
    }
}

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