如何在编辑模式下删除表格视图单元格突出显示的颜色。我在编辑模式下使用表视图属性“allowsMultipleSelection”。默认情况下,单元格以浅蓝色突出显示。虽然我们可以更改突出显示的颜色,但我没有看到任何删除突出显示的颜色属性的选项。我只想要我的表视图单元格复选框选择而不是突出显示模式。
" cell.SelectedBackgroundView"允许在选择单元格时更改单元格的背景颜色,但我想只选择复选框,而选择状态下的单元格则没有颜色。
附加屏幕图像。在我的情况下,单元格有一个背景图像,所以在选择时我也希望单元格背景相同,只选中复选框。
答案 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
属性以突出显示所选的单元格。这些样式用以下颜色突出显示单元格:
蓝色,灰色,默认(浅灰色),无
选择.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