when you tap on a cell the row gets selected and highlighted.Now what i want to do is disable the highlighting but allow the selection.Is there a way around it.There is question that answers this but it disables both the selection and highlighting.
-
9`cell.selectionStyle = UITableViewCellSelectionStyleNone;` add this in your `cellForRowAtIndexPath` method – Shruti May 14 '15 at 09:18
12 Answers
You can just set the cell's selection style to "None" from Storyboard:
Or from code:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
For Swift 3:
cell.selectionStyle = UITableViewCellSelectionStyle.none
For Swift 4 & above:
cell.selectionStyle = .none

- 128
- 1
- 10

- 4,775
- 3
- 27
- 42
-
When I select to "none" I lose ability to work of of highlighted state. Can I make the background none/white without loosing that state? – Sean Jul 02 '17 at 16:35
-
-
Change UITableViewCell
's selectedBackgroundView
color to transparent.
let clearView = UIView()
clearView.backgroundColor = UIColor.clearColor() // Whatever color you like
UITableViewCell.appearance().selectedBackgroundView = clearView
or to set for a specific cell:
cell.backgroundView = clearView

- 9,637
- 14
- 70
- 146

- 14,570
- 9
- 53
- 75
-
1This is the best options, since `cell.selectionStyle = UITableViewCellSelectionStyleNone` sometimes breaks something deeply inside Apples animation logic. – orkenstein Nov 27 '16 at 22:17
-
then use instead ..`UITableViewCell.appearance().selectionStyle = .None` – vaibhav Jan 18 '17 at 11:24
-
This is nice to use if you have selectable things within the cell. – Matthew Korporaal Jul 18 '17 at 18:01
-
Excellent solution. Putting this code in the cell's `awakeFromNib()` function works a treat – Sep 11 '19 at 17:35
-
Try setting cell selection style to None -
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
This will solve your problem

- 1,408
- 9
- 13
in swift 3
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}

- 1,751
- 20
- 23
To add a custom color use the below code. And to make it transparent use alpha: 0.0
cell.selectedBackgroundView = UIView(frame: CGRect.zero)
cell.selectedBackgroundView?.backgroundColor = UIColor(red:0.27, green:0.71, blue:0.73, alpha:1.0)
If you use custom color and want to give it rounded corner look use:
cell.layer.cornerRadius = 8
Also, use this for better animation and feel
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}

- 566
- 1
- 6
- 28
For those looking for a programmatic way in Swift 3
cell.selectionStyle = UITableViewCellSelectionStyle.none

- 8,132
- 12
- 51
- 71
For Objc:
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
- (void)viewDidLoad {
[super viewDidLoad];
_tableView.allowsSelection = YES;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
.. .. .. ..
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
. . . . ..
}

- 1,212
- 13
- 9
Here is the solution for swift 3,works even in editing mode
cell.selectionStyle = .gray
cell.selectedBackgroundView = {
let colorView = UIView()
colorView.backgroundColor = UIColor.black.withAlphaComponent(0.0)
//change the alpha value or color to match with you UI/UX
return colorView
}()

- 27
- 5