删除UITableView的单元格高亮颜色

neh*_*eha 96 objective-c uitableview ios

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

cell.selectioncolor = [UIColor clearcolor];
Run Code Online (Sandbox Code Playgroud)

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

有人可以帮帮我吗?

提前致谢.

Vla*_*mir 289

cell.selectionStyle = UITableViewCellSelectionStyleNone;
Run Code Online (Sandbox Code Playgroud)

Swift 4中更新

cell.selectionStyle = UITableViewCell.SelectionStyle.none
Run Code Online (Sandbox Code Playgroud)

要么

cell.selectionStyle = .none
Run Code Online (Sandbox Code Playgroud)

  • @Pawriwes,是的.如果我没记错的话,如果使用Interface Builder创建单元格,也可以在单元格的XIB中设置该属性 (8认同)
  • 我将该代码保存在 cellForRowAtIndexPath: 中,这是要保存的确切位置吗? (3认同)
  • 如果我这样做,在编辑时,它不会选择单元格:( (3认同)
  • 这个答案基本上是错误的。您可以在单元格子类中执行此操作。一旦构建完成,您就永远不会在 VC 中执行此操作。 (2认同)

Mic*_*ael 44

Storyboard或中选择此项XIB


在此输入图像描述

  • 另外,如果您在“表格视图”中进行了更改,则必须选中“表格视图**单元格**”,而不是未选择单元格。 (3认同)
  • 确保您对单元格而不是表格视图执行此操作 (3认同)
  • @Pulkit 这不是真的。这只会禁用单元格的选择状态。这与显示在其中的数据或处理它的交互无关。检查以确保您设置了所有正确的注册并且没有覆盖其他功能。 (2认同)

小智 11

// Swift 2.0

cell.selectionStyle = UITableViewCellSelectionStyle.None
Run Code Online (Sandbox Code Playgroud)

  • 或者你可以直接使用枚举值cell.selectionStyle = .None (4认同)

Ras*_*n L 11

Swift 3.0

cell.selectionStyle = .none
Run Code Online (Sandbox Code Playgroud)


lyn*_*pin 7

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

selectedBackgroundView?.isHidden = true


Fra*_*tti 6

目标C:

cell.selectionStyle = UITableViewCellSelectionStyleNone;
Run Code Online (Sandbox Code Playgroud)

要么

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
Run Code Online (Sandbox Code Playgroud)

斯威夫特4:

self.selectionStyle = UITableViewCellSelectionStyle.none;
Run Code Online (Sandbox Code Playgroud)

斯威夫特3:

cell.selectionStyle = .none
Run Code Online (Sandbox Code Playgroud)

斯威夫特2:

cell.selectionStyle = UITableViewCellSelectionStyle.None
Run Code Online (Sandbox Code Playgroud)

如果只想使用Storyboard / Xib进行更改,则只需选择要删除“选择样式效果”的单元格并将其定义为“无”即可。它也将像魔术一样工作:D

情节提要/ Xib


Fat*_*tie 6

请注意,每个提到“selectionStyle”的答案都是完全错误的。

selectionStyle确定是否可以单击该单元格

它与单击单元格时是否变为“灰色”无关。

关闭“灰色效果”(当您单击它时)的唯一方法如下:

class YourCell:  UITableViewCell {
    
    override func didMoveToSuperview() {
        selectedBackgroundView?.isHidden = true
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

请注意,这selectedBackgroundView确实可以在故事板上找到。

我不会愚弄它,因为生命周期是如此奇怪,但请注意,现在,您确实可以selectedBackgroundView在故事板上了解。你可能可以在那里处理它。

@fingia 的回答,见下文。

关于本页上的问题,如何“删除单元格突出显示颜色”,请注意 @fingiua 答案正确地指出您进行了调整selectedBackgroundView。但是,它指出您所做的是更改背景颜色。

在过去在某种程度上是有效的,并且在某些情况下仍然是可能的,但是弄清楚在生命周期中何时必须设置颜色是一项艰巨的任务 - 因为 UIKit 本身不断地设置颜色!(例如,如果您在明显的 didMoveToSuperview 或prepareForReuse 中执行此操作...它根本不起作用。)

这是一个很好的例子,说明在互联网上,对于晦涩但关键的问题,互联网上经常有很多非常旧的示例代码,这些代码被无休止地复制,这要么是错误的,要么是“半错误的”,但仍然被无休止地复制

您完全没有理由愚弄颜色,因为您想做的只是……隐藏它。所以就隐藏它吧。这(当然)工作可靠(事实上,您可以在视图周期中的任何地方这样做,一旦它被隐藏,那就结束了)。