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

3voto

DrBongo Punkte 49

Wie die benutzerdefinierte Farbe für eine ausgewählte Zelle in UITableView großartige Lösung nach Maciej Swic's responder

Um das noch zu ergänzen, erklären Sie Swic's responder in der Zellkonfiguration in der Regel unter:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

Und für einen zusätzlichen Effekt können Sie anstelle der Systemfarben RGB-Werte für ein benutzerdefiniertes Farbdesign verwenden. In meinem Code habe ich das folgendermaßen erreicht:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

} 

 static NSString *CellIdentifier = @"YourCustomCellName";
 MakanTableCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

// Configure the cell...

if (cell == nil) {

cell = [[[NSBundle mainBundle]loadNibNamed:@"YourCustomCellClassName" owner:self options:nil]objectAtIndex:0];
                    } 

UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor = [UIColor colorWithRed:255.0/256.0 green:239.0/256.0 blue:49.0/256.0 alpha:1];
bgColorView.layer.cornerRadius = 7;
bgColorView.layer.masksToBounds = YES;
[cell setSelectedBackgroundView:bgColorView];

return cell;

}

Lassen Sie mich wissen, ob das auch bei Ihnen funktioniert. Sie können mit dem cornerRadius Zahl für die Auswirkungen auf die Ecken der ausgewählten Zelle.

3voto

John Punkte 1557

So fügen Sie den Hintergrund für alle Zellen hinzu (unter Verwendung der Antwort von Maciej):

for (int section = 0; section < [self.tableView numberOfSections]; section++) {
        for (int row = 0; row < [self.tableView numberOfRowsInSection:section]; row++) {
            NSIndexPath* cellPath = [NSIndexPath indexPathForRow:row inSection:section];
            UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:cellPath];

            //stuff to do with each cell
            UIView *bgColorView = [[UIView alloc] init];
            bgColorView.backgroundColor = [UIColor redColor];
            [cell setSelectedBackgroundView:bgColorView];
        }
    }

2voto

Quanlong Punkte 21696

Außer Kraft setzen UITableViewCell 's setSelected funktioniert auch.

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

    // Set background color
    let view = UIView()
    view.backgroundColor = UIColor.redColor()
    selectedBackgroundView = view
}

2voto

Suryavel TR Punkte 3238

Ich verwende den folgenden Ansatz, der für mich gut funktioniert,

class MyTableViewCell : UITableViewCell {

                var defaultStateColor:UIColor?
                var hitStateColor:UIColor?

                 override func awakeFromNib(){
                     super.awakeFromNib()
                     self.selectionStyle = .None
                 }

// if you are overriding init you should set selectionStyle = .None

                override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
                    if let hitColor = hitStateColor {
                        self.contentView.backgroundColor = hitColor
                    }
                }

                override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
                    if let defaultColor = defaultStateColor {
                        self.contentView.backgroundColor = defaultColor
                    }
                }

                override func touchesCancelled(touches: Set<UITouch>?, withEvent event: UIEvent?) {
                    if let defaultColor = defaultStateColor {
                        self.contentView.backgroundColor = defaultColor
                    }
                }
            }

2voto

fullmoon Punkte 7299

1- Fügen Sie der Inhaltsansicht Ihrer Zelle eine Ansicht hinzu.
2- Klicken Sie mit der rechten Maustaste auf Ihre Zelle.
3- Machen Sie die hinzugefügte Ansicht zur "selectedBackgroundView".

enter image description here

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