UITableViewCell Selected Background Color on Multiple Selection
All the above answers are fine but a bit to complex to my liking. The simplest way to do it is to put some code in the cellForRowAtIndexPath
. That way you never have to worry about changing the color when the cell is deselected.
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) /* this is where the magic happens, create a UIView and set its backgroundColor to what ever color you like then set the cell's selectedBackgroundView to your created View */ let backgroundView = UIView() backgroundView.backgroundColor = YOUR_COLOR_HERE cell.selectedBackgroundView = backgroundView return cell}
This worked for me:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { var selectedCell:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)! selectedCell.contentView.backgroundColor = UIColor.redColor()}// if tableView is set in attribute inspector with selection to multiple Selection it should work.// Just set it back in deselect override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) { var cellToDeSelect:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)! cellToDeSelect.contentView.backgroundColor = colorForCellUnselected}//colorForCellUnselected is just a var in my class
Swift 3
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "yourCellIdentifier", for: indexPath) cell.selectionStyle = .none return cell}
Swift 2
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "yourCellIdentifier", for: indexPath) cell.selectionStyle = .None return cell}