在编辑模式下禁用tableview单元格突出显示颜色?

时间:2018-03-27 17:03:20

标签: ios uitableview uitableviewrowaction

enter image description here如何在编辑模式下删除表格视图单元格突出显示的颜色。我在编辑模式下使用表视图属性“allowsMultipleSelection”。默认情况下,单元格以浅蓝色突出显示。虽然我们可以更改突出显示的颜色,但我没有看到任何删除突出显示的颜色属性的选项。我只想要我的表视图单元格复选框选择而不是突出显示模式。

" cell.SelectedBackgroundView"允许在选择单元格时更改单元格的背景颜色,但我想只选择复选框,而选择状态下的单元格则没有颜色。

附加屏幕图像。在我的情况下,单元格有一个背景图像,所以在选择时我也希望单元格背景相同,只选中复选框。

7 个答案:

答案 0 :(得分:2)

在您的单元格类中重写此方法:

override func setHighlighted(_ highlighted: Bool, animated: Bool) {}

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: false)
    let viewForHighlight = UIView()
    self.selectedBackgroundView = viewForHighlight
    if self.isEditing {
        viewForHighlight.backgroundColor = UIColor.clear
    } else {
        viewForHighlight.backgroundColor = UIColor.gray
    }
}

答案 1 :(得分:1)

我会查看这个委托方法:tableView(_:shouldHighlightRowAt:) 您可以通过在所需状态中返回false来检查是否正在编辑并完全禁止突出显示。

答案 2 :(得分:0)

如果您尝试完全删除选择,则可以使用以下代码

对于Swift 3 cell.selectionStyle = UITableViewCellSelectionStyle.none

对于Swift 4 cell.selectionStyle = .none

答案 3 :(得分:0)

另一种选择是使用(在Objective-C中,你可以在Swift中做类似的事情,当然):

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
}

根据您的模型或数据或其他内容,您可以在此方法中选中或取消选中每个单元格中的框,并关闭突出显示。

来自文档:

  

表视图在使用单元格绘制行之前将此消息发送到其委托,从而允许委托在显示之前自定义单元格对象。此方法为委托提供了覆盖表视图前面设置的基于状态的属性的机会,例如选择和背景颜色。委托返回后,表视图仅设置alpha和frame属性,然后仅在行滑入或滑出时为其设置动画。

答案 4 :(得分:0)

尝试这种方式,我刚检查过它,它可以根据需要运行:

func tableView(_ tableView: UITableView, shouldHighlightRowAt indexPath: IndexPath) -> Bool {
        let cell = tableView.cellForRow(at: indexPath)
        let selectedColor: UIColor
        let selectedView = UIView(frame: CGRect.zero)
        if tableView.isEditing == true {

            selectedColor = .clear
        } else {
            selectedColor = .lightGray
        }
        selectedView.backgroundColor = selectedColor
        cell?.multipleSelectionBackgroundView = selectedView
        return true
    }

答案 5 :(得分:0)

  

UITableViewCell具有selectionStyle属性以突出显示所选的单元格。这些样式用以下颜色突出显示单元格:

蓝色,灰色,默认(浅灰色),无

enter image description here

选择.none样式后,它只会阻止突出显示单元格。它不会阻止选择。您可以通过在didSelectRowAt indexPath:函数中应用断点来查看:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    print("UITableView Selected")
}

答案 6 :(得分:0)

在iOS 14及更高版本中,您现在可以在await ((BotAdapter)_adapter).ContinueConversationAsync(_appId, conversationReference, BotCallback, default(CancellationToken)); 子类中进行此操作:

UITableViewCell

有关适用于iOS 13及更低版本的解决方案,请参见https://stackoverflow.com/a/64582629/171933