【问题标题】:Remove the cell highlight color of UITableView移除 UITableView 的单元格高亮颜色
【发布时间】:2011-02-16 17:49:42
【问题描述】:

我想删除uitableview单元格选择的默认蓝色。我不想要任何选择颜色。我还没有创建自定义单元类。我通过在其上添加标签和按钮来自定义单元格。 我试着做:

cell.selectioncolor = [UIColor clearcolor];

但它说这种方法已被弃用。

【问题讨论】:

  • 如果你在这里谷歌,请注意这里选择的非常古老(10 年以上)的答案是完全错误的。

标签: ios objective-c uitableview


【解决方案1】:

目标-C:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

// or 

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

斯威夫特 3+:

cell.selectionStyle = UITableViewCellSelectionStyle.none;

// or

cell.selectionStyle = .none

斯威夫特 2:

cell.selectionStyle = UITableViewCellSelectionStyle.None

如果您只想使用 Interface Builder Storyboard/Xib 来更改它,请选择要删除“选择样式效果”的单元格并将其定义为“无”。它也会像魔术一样工作:D

【讨论】:

  • Swift 4 : cell.selectionStyle = UITableViewCell.SelectionStyle.none
【解决方案2】:

在 Swift 中:

cell.selectionStyle = UITableViewCell.SelectionStyle.none

或者简单地说:

cell.selectionStyle = .none

【讨论】:

  • 我把那段代码保存在 cellForRowAtIndexPath: 中,那是保存的确切位置吗?
  • @Pawriwes,是的。如果我没记错的话,如果您使用 Interface Builder 创建单元格,您也可以在单元格的 XIB 中设置该属性
  • 如果我这样做,在编辑时,它不会选择单元格:(
  • 这个答案基本上是错误的。您在单元格子类中执行此操作。一旦构建完成,您永远不会在 VC 中执行此操作。
  • @Fattie 的回答值得更多认可。如果你将cell.selectionStyle = .none 代码放在VC 中,当你选择单元格时,你会看到默认颜色。如果您想要显示自定义颜色,则必须将该行放在您的单元格子类中。
【解决方案3】:

StoryboardXIB 属性检查器中,将Selection 设置为None


【讨论】:

  • 另外,如果您在“表格视图”中更改而不是不选择单元格,则必须检查“表格视图单元格”。
  • @Pulkit 这不是真的。这只会禁用单元格的选择状态。这与其中显示的数据或处理它的交互无关。检查以确保您拥有所有正确的注册集并且没有覆盖其他功能。
  • 确保为单元格而不是表格视图执行此操作
【解决方案4】:

斯威夫特 5:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
    cell.selectionStyle = .none
    
    return cell
}

【讨论】:

    【解决方案5】:

    Swift 5.4,只需输入selectionStyle = .none

    例子:

    class TableViewCell: UITableViewCell {
    
     override func awakeFromNib() {
        super.awakeFromNib()
        
        selectionStyle = .none 
    
    }
    

    【讨论】:

    【解决方案6】:

    在单元格中

    class YourCell:  UITableViewCell {
        
        override func didMoveToSuperview() {
            selectionStyle = .none
        }
    
        ...
    }
    

    就这么简单。

    【讨论】:

      【解决方案7】:

      正确答案应该是:

      cell.selectedBackgroundView?.backgroundColor = <choose your color>

      选择类型是一个不同的属性,当设置为 .none 时会产生您想要的以及其他不需要的副作用。

      如果您不希望单元格突出显示,则使其背景视图的颜色与突出显示时的颜色相同。

      【讨论】:

        【解决方案8】:

        将 TableView 选择样式设置为 .none 影响了我的应用程序中 tableview 的响应能力和性能(didSelectRowAt indexPath 点按延迟了)。我对这个问题的解决方案是在首次创建单元格时隐藏awakeFromNib() 上的选定背景视图:

        selectedBackgroundView?.isHidden = true

        【讨论】:

          【解决方案9】:

          斯威夫特 3.0

          cell.selectionStyle = .none
          

          【讨论】:

            【解决方案10】:

            快速试试这个

            cell?.selectionStyle = UITableViewCellSelectionStyle.None
            

            【讨论】:

              【解决方案11】:
              // Swift 2.0
              
              cell.selectionStyle = UITableViewCellSelectionStyle.None
              

              【讨论】:

              • 也可以直接使用枚举值 cell.selectionStyle = .None
              猜你喜欢
              • 2011-01-01
              • 1970-01-01
              • 1970-01-01
              • 2023-04-03
              • 1970-01-01
              • 2018-11-26
              • 2019-08-03
              • 1970-01-01
              相关资源
              最近更新 更多