突出显示没有选择的 UITableView

Posted

技术标签:

【中文标题】突出显示没有选择的 UITableView【英文标题】:Highlight UITableView Without Selection 【发布时间】:2017-08-13 03:52:19 【问题描述】:

我有一个自定义的UITableViewCell 子类,我想显示高亮状态但没有选择状态。

如何在触摸时突出显示 UITableViewCell 背景(在发布时取消突出显示),但不显示选择状态单元格背景(我有自己的自定义选择状态)?

【问题讨论】:

【参考方案1】:
@implementation CustomTableViewCell

- (void)awakeFromNib 
    [super awakeFromNib];
    // Initialization code


- (void)setSelected:(BOOL)selected animated:(BOOL)animated 
    [super setSelected:selected animated:animated];

    // You have your code here as you said


- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated

    //Implement custom hilighting code


@end

【讨论】:

【参考方案2】:

你需要实现UITableView delegate方法

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
  tableView.deselectRow(at: indexPath, animated: true)

【讨论】:

这实际上会取消选择单元格——我只想要一个自定义状态。【参考方案3】:

首先,您需要通过将allowsSelection 设置为false 来使表格视图不可选择。

接下来,创建这个自定义表格视图单元格:

class MyCell: UITableViewCell 
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 
        backgroundColor = .red // or some other color
    

    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) 
        backgroundColor = .white

    

在表格视图中使用此自定义单元格。你可以在cellForRowAtIndexPath做这样的事情:

let cell = MyCell()
cell.isUserInteractionEnabled = true
// configure the cell's other stuff
return cell

【讨论】:

以上是关于突出显示没有选择的 UITableView的主要内容,如果未能解决你的问题,请参考以下文章

UITableView:突出显示最后一个单元格,但其他单元格也会突出显示

如何突出显示 UITableView 中的一行

在 UITableView 中突出显示所选单元格的边框

UIButton 保持突出显示,直到 UITableView 结束滚动

用户滑动时表格视图单元格突出显示

uitableview 单元格突出显示