点击时更改按钮的文本颜色

Changing a button's text color when tapped

我正在尝试让按钮的文本在点击时将字体颜色更改为红色。我查看了几个月前的类似帖子,使用该代码会导致 Xcode 6.1.1 中出现构建错误。这是我正在尝试的代码:

class ViewController: UIViewController {

    @IBAction func firstButton(sender: UIButton) { 
        firstButton.titleLabel.textColor = UIColor.redColor()
    }
}

我得到的错误代码是:

'(UIButton) -> ()' does not have a member named 'titleLabel'

任何帮助将不胜感激,因为我认为 Swift 是我在尝试学习 Objective C 时失去耐心后的救命稻草。

UIButton.titlelabel 是可选的 属性。您必须使用可选链接来更改其属性。

firstButton.titleLabel?.backgroundColor = UIColor.redColor()

请阅读 swift 选项以详细了解这一点。 http://www.appcoda.com/beginners-guide-optionals-swift/

您正在尝试更改函数 titleLabel 的文本颜色,这没有意义。如果您试图获取对按钮的引用以获取其 titleLabel,则应该访问 sender 参数。此外,正如 rakeshbs 指出的那样,titleLabel 是 UIButton 的可选 属性。

class ViewController: UIViewController {

    @IBAction func firstButton(sender: UIButton) {
        sender.titleLabel?.textColor  = UIColor.redColor()
    }
}

如果您分解错误消息,您会发现这显然是问题所在。

'(UIButton) -> ()' does not have a member named 'titleLabel'

这表明您正在尝试访问类型为 (UIButton) -> () 的对象上名为 titleLabel 的成员(或 属性),这意味着一个将按钮作为输入的函数returns什么都没有。

任何对解决我的这个问题所需的确切 swift 代码感兴趣的人,这里是:

class ViewController: UIViewController {

@IBAction func firstButton(sender: UIButton) {

    sender.setTitleColor(UIColor.redColor(), forState: UIControlState.Normal)

}

这将适用于 Swift 3 :

yourButton.setTitleColor(UIColor.blue, for: .normal)