选择单元格时 UITableView 分隔符颜色发生变化

Posted

技术标签:

【中文标题】选择单元格时 UITableView 分隔符颜色发生变化【英文标题】:UITableView separator color changing when cell selected 【发布时间】:2016-10-19 09:02:30 【问题描述】:

我创建了一个 UITableView,但分隔符有问题。我对其进行了自定义,使其显示为灰色且没有插图:

self.tableView.separatorInset = .zero
self.tableView.separatorColor = AppColors.separatorColor

我也尝试了一张图片:

self.tableView.separatorInset = .zero
tableView.separatorStyle = UITableViewCellSeparatorStyle.singleLine
tableView.separatorColor = UIColor(patternImage: #imageLiteral(resourceName: "thin_divider"))

问题:选择行时,分隔符变为白色。我玩了 didSelectRowAtdidDeselectRowAtdidHighlightRowAt 但无事可做,当单元格被选中时它保持白色。请参见下面的示例(此示例中选择了最后一个单元格)...

【问题讨论】:

您确定它是分隔符,而不仅仅是表格视图和下一个视图之间的 1 像素间隙吗?因为在您的图像上,它只显示在最后一个单元格之后,而不是每个单元格之后。 @smeshko 是的,当然,因为在图像上我选择了最后一个单元格,但如果我选择任何其他单元格,分隔符也会变成白色 @Mrunal 是的,谢谢,它解决了问题,但按下时不再突出显示单元格 【参考方案1】:

cellForRowAtIndexPathmethod 中试试这个代码行

[cell setSelectionStyle: UITableViewCellSelectionStyleNone];

这会将none设置为选择样式(此属性的默认值为UITableViewCellSelectionStyleBlue)。

对于单元格高亮部分,请在didSelectRowAtIndexPath 中使用以下代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    [cell setHighlighted: NO];
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
 

希望这会有所帮助。

【讨论】:

以上是关于选择单元格时 UITableView 分隔符颜色发生变化的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 选择单元格时所有组件都更改了背景颜色

UITableView 单元格选择颜色?

UITableView 自定义分隔符,选择时隐藏

选择单元格时,图像视图消失但 UILabel 消失

在uitableview中选择时如何更改自定义单元格图像和标签字体颜色?

Swift:点击一个单元格时更改所有 UITableViewCells 的文本颜色