禁用 uitableview 突出显示,但允许选择单个单元格

当您点击一个单元格时,该行将被选中并突出显示。现在我要做的是禁用高亮,但允许选择。是否有一个方法绕过它。有一个问题可以回答这个问题,但是它禁用了选择和突出显示。

56884 次浏览

Try setting cell selection style to None -

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

This will solve your problem

You can just set the cell's selection style to "None" from Storyboard:

See here

Or from code:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

For Swift 3:

cell.selectionStyle = UITableViewCellSelectionStyle.none

For Swift 4 & above:

cell.selectionStyle = .none

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

For Swift:

UITableViewCell.selectionStyle = UITableViewCellSelectionStyle.None;

Or when you subclass a cell in swift:

class CustomCell : UITableViewCell {


required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
selectionStyle = .None
}


}

For Swift 5 the best way is:

cell.selectionStyle = .none

For those looking for a programmatic way in Swift 3

cell.selectionStyle = UITableViewCellSelectionStyle.none

For Objc:

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

- (void)viewDidLoad {
[super viewDidLoad];
_tableView.allowsSelection = YES;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
.. .. .. ..
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
. . . . ..
}

For Swift 3.0:

cell.selectionStyle = .none

in swift 3

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}

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
}()

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)
}

You can set the selection property of the cell itself in the storyboard enter image description here