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

时间:2015-05-14 09:12:44

标签: ios objective-c uitableview

当你点击一个单元格时,行被选中并突出显示。现在我要做的是禁用突出显示但允许选择。是否有办法绕过它。有问题可以解决这个问题,但它会禁用这两个选项并突出显示。

12 个答案:

答案 0 :(得分:153)

您可以将单元格的选择样式设置为"无"来自故事板:

See here

或者来自代码:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

对于Swift 3:

cell.selectionStyle = UITableViewCellSelectionStyle.none

对于Swift 4&以上:

cell.selectionStyle = .none

答案 1 :(得分:23)

UITableViewCell的{​​{1}}颜色更改为透明。

selectedBackgroundView

或为特定单元格设置:

let clearView = UIView() clearView.backgroundColor = UIColor.clearColor() // Whatever color you like UITableViewCell.appearance().selectedBackgroundView = clearView

答案 2 :(得分:8)

尝试将单元格选择样式设置为无 -

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

这将解决您的问题

答案 3 :(得分:8)

Swift 3.0

cell.selectionStyle = .none

答案 4 :(得分:6)

对于Swift:

UITableViewCell.selectionStyle = UITableViewCellSelectionStyle.None;

或者当你在swift中继承一个单元格时:

class CustomCell : UITableViewCell {

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

}

答案 5 :(得分:4)

swift 3中的

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

答案 6 :(得分:1)

对于那些在Swift 3中寻找程序化方式的人

cell.selectionStyle = UITableViewCellSelectionStyle.none

答案 7 :(得分:1)

您可以在故事板中设置单元格本身的选择属性 enter image description here

答案 8 :(得分:0)

对于Objc:

  

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

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

答案 9 :(得分:0)

要添加自定义颜色,请使用以下代码。并使其透明化使用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)

如果你使用自定义颜色并希望给它圆角看,请使用:

cell.layer.cornerRadius = 8

此外,使用它可以获得更好的动画效果

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    tableView.deselectRow(at: indexPath, animated: true)
}

答案 10 :(得分:-1)

对于 Swift 5 ,最好的方法是:

cell.selectionStyle = .none

答案 11 :(得分:-1)

这是swift 3的解决方案,即使在编辑模式下也能正常工作

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