更改didHighlightRowAt

时间:2018-01-16 09:32:56

标签: ios swift uitableview textcolor

我有这段代码:

func tableView(_ tableView: UITableView, didHighlightRowAt indexPath: IndexPath) {
        let cell  = tableView.cellForRow(at: indexPath)
        cell!.contentView.backgroundColor = .blue
        cell?.textLabel?.textColor = UIColor.white
        var cell2 = tableView.cellForRow(at: indexPath) as! DataTableViewCell
       cell2.textLabel.textColor = UIColor.white
    }

背景更改工作正常,但文本颜色更改无效。

有谁知道为什么以及如何解决这个问题?

6 个答案:

答案 0 :(得分:2)

我认为不是写下这两行:

cell!.textLabel?.textColor = #colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
cell?.textLabel?.textColor = UIColor.white

只写一行:

cell.textLabel?.highlightedTextColor = .black

对你有用!

答案 1 :(得分:1)

DELIMITER // CREATE TRIGGER delete_2_after_update AFTER UPDATE ON statusTable FOR EACH ROW BEGIN SLEEP(20); DELETE FROM mainTable WHERE isSent = 2; END; // DELIMITER ;

中使用此功能
DataTableViewCell

请参阅Apple Developer Documentation

答案 2 :(得分:1)

尝试以下任何一种方法:

// set highlighted color in `tableView cellForRowAt indexPath`
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
 cell?.textLabel?.highlightedTextColor = UIColor.white
}

或试试这个

class CustomCell: UITableViewCell {


    // As an alternate of `tableView cellForRowAt indexPath`, label text highlighted color can be set in both these methods of cell - `awakeFromNib` and `prepareForReuse`
    override func awakeFromNib() {
        super.awakeFromNib()
        self.textLabel?.highlightedTextColor = UIColor.white
    }

    override func prepareForReuse() {
        super.prepareForReuse()
        self.textLabel?.highlightedTextColor = UIColor.white
    }


    // or textColor can be directly set here 
    override func setHighlighted(_ highlighted: Bool, animated: Bool) {
        super.setHighlighted(highlighted, animated: animated)
        self.textLabel?.textColor = UIColor.white
    }
}

答案 3 :(得分:0)

tableView(_:didHighlightRowAt:)功能是应用的 Controller 域的一部分,而设置颜色是 View 域的一部分(根据模型 - 视图 - 控制器)图案)。为了保持良好的职责分离,您可能需要考虑改变控制器之外的颜色,i。即在细胞本身。为此,您将创建一个简单的UITableViewCell子类,如下所示:

class MyCell: UITableViewCell {
    class var reuseIdentifier: String { return "MyCell" }

    override func awakeFromNib() {
        super.awakeFromNib()
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        if selected {
            textLabel?.textColor = UIColor.white
        } else {
            textLabel?.textColor = UIColor.black
        }
    }
}

这样,单元格本身(而不是控制器)处理自己的图形表示,这是推荐的方式。

答案 4 :(得分:-1)

cell.textLabel.highlightedTextColor = [UIColor greencolor];

答案 5 :(得分:-2)

好的,这段代码有效:

override func awakeFromNib () {
         super.awakeFromNib ()
         // Initialization code
         self.titleCell? .xtxtColor = UIColor.black
         self.titleCell? .highlightedTextColor = UIColor.white
  }

     override func setSelected (_ selected: Bool, animated: Bool) {
         super.setSelected (selected, animated: animated)

         // Configure the view for the selected state
     }
    
    
     override func prepareForReuse () {
         super.prepareForReuse ()
         self.titleCell? .highlightedTextColor = UIColor.white
     }

非常感谢你的帮助:))