How to change color of UITableViewCell when selecting? How to change color of UITableViewCell when selecting? ios ios

How to change color of UITableViewCell when selecting?


iOS 6.0 and later

- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath {return YES;}- (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath {  // Add your Colour.    CustomCell *cell = (CustomCell *)[tableView cellForRowAtIndexPath:indexPath];    [self setCellColor:[UIColor whiteColor] ForCell:cell];  //highlight colour}- (void)tableView:(UITableView *)tableView didUnhighlightRowAtIndexPath:(NSIndexPath *)indexPath {  // Reset Colour.    CustomCell *cell = (CustomCell *)[tableView cellForRowAtIndexPath:indexPath];    [self setCellColor:[UIColor colorWithWhite:0.961 alpha:1.000] ForCell:cell]; //normal color}- (void)setCellColor:(UIColor *)color ForCell:(UITableViewCell *)cell {    cell.contentView.backgroundColor = color;    cell.backgroundColor = color;}

Custom UITableViewCell

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {    [super setSelected:selected animated:animated];    UIView * selectedBackgroundView = [[UIView alloc] init];    [selectedBackgroundView setBackgroundColor:[UIColor colorFromHexString:@"5E6073"]]; // set color here    [self setSelectedBackgroundView:selectedBackgroundView];}


You can also use UIAppearance like this:

UIView *selectionView = [UIView new];selectionView.backgroundColor = [UIColor redColor];[[UITableViewCell appearance] setSelectedBackgroundView:selectionView];

This will apply to all instances of UITableViewCell or any of its subclasses you might have. Just make sure the selectionStyle property of your cell is not set to UITableViewCellSelectionStyleNone.


iOS 8.0 (and later) using Swift

Swift 2

override func tableView(tableView: UITableView, shouldHighlightRowAtIndexPath indexPath: NSIndexPath) -> Bool {    return true}override func tableView(tableView: UITableView, didHighlightRowAtIndexPath indexPath: NSIndexPath) {    var cell = tableView.cellForRowAtIndexPath(indexPath)    cell?.contentView.backgroundColor = UIColor.orangeColor()    cell?.backgroundColor = UIColor.orangeColor()}override func tableView(tableView: UITableView, didUnhighlightRowAtIndexPath indexPath: NSIndexPath) {    var cell = tableView.cellForRowAtIndexPath(indexPath)    cell?.contentView.backgroundColor = UIColor.blackColor()    cell?.backgroundColor = UIColor.blackColor()}

Swift 3

override func tableView(_ tableView: UITableView, shouldHighlightRowAt indexPath: IndexPath) -> Bool {    return true}override func tableView(_ tableView: UITableView, didHighlightRowAt indexPath: IndexPath) {    let cell = tableView.cellForRow(at: indexPath)    cell?.contentView.backgroundColor = UIColor.orange    cell?.backgroundColor = UIColor.orange}override func tableView(_ tableView: UITableView, didUnhighlightRowAt indexPath: IndexPath) {    let cell = tableView.cellForRow(at: indexPath)    cell?.contentView.backgroundColor = UIColor.black    cell?.backgroundColor = UIColor.black}

enter image description here