选择时Swift更改文本颜色

时间:2015-01-14 08:51:52

标签: ios swift ios8 ios8.1

如何更改iOS Swift选择中textColorlabel的{​​{1}}?

我希望背景不要改变。只有celltextColor(如果有)。类似的东西:

seperatorColor

我已经看到在某些颜色发生变化的应用中会发生这种情况。但我无法接近它。根据Apple Dev Reference:

  

使用标签实现一种文本按钮的子类可以使用   绘制按下状态时此属性中的值   按钮。无论何时,此颜色都会自动应用于标签   highlight属性设置为true。

但是,标签编译得很好,不会突出显示颜色。按钮没有label.highlightedTextColor = UIColor.whiteColor();

5 个答案:

答案 0 :(得分:6)

我已尝试在didSelectAtIndexPathdidDeselectAtIndexPath中进行设置,但颜色会随着延迟而改变。我不喜欢那样。

这就是我最终解决问题的方法:

我已将UITableViewCell子类化,并连接了所有@IBOutlet。在awakeFromNib()我只是这样做了:

@IBOutlet weak var myLabel: UILabel!


override func awakeFromNib() {
    super.awakeFromNib()        

    self.myLabel.highlightedTextColor = .blackColor()

}

现在完美运作!

顺便说一下这是我关于堆栈溢出的第一个答案,请对我好好嘿嘿

(我使用的是Swift 2.0和Xcode 7.2.1)

答案 1 :(得分:5)

您可以在didSelectAtIndexPathdidDeselectAtIndexPath以及cellForRowAtIndexPath

中设置颜色
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    tableView.cellForRowAtIndexPath(indexPath)?.textLabel?.textColor = UIColor.blackColor()
}

func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
    tableView.cellForRowAtIndexPath(indexPath)?.textLabel?.textColor = UIColor.redColor()
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    // Dequeue cell
    cell.textLabel?.textColor = UIColor.redColor()
}

答案 2 :(得分:5)

如果您(使用/不使用)自定义单元格(作为xib),您可以选择标签,并从实用程序转到突出显示并将颜色更改为您要在选择中显示的颜色。 这是一个更清晰的快照:)  snapshot

答案 3 :(得分:0)

cellForRowAt indexPath中,您只需添加此行

即可
cell.textLabel?.textColor = UIColor.blackColor()

答案 4 :(得分:0)

在单元格setSelected方法中,您可以覆盖它,然后提供所需的任何颜色或突出显示状态:

重写功能setSelected(_选择:布尔,动画:布尔){         super.setSelected(已选择,动画:动画)

    if isSelected {
        // your color or highlited here
    } else {
       // your colour or highlighted here
    }
}