当按下按钮时改变按钮的文本颜色

10

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

class ViewController: UIViewController {

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

我收到的错误代码是:

'(UIButton) -> ()' 没有名为 'titleLabel' 的成员

非常感谢任何帮助,因为在尝试学习Objective C后失去耐心,我将Swift视为我的救星。

4个回答

14

对于任何对使我的这个问题工作所需的精确Swift代码感兴趣的人,这里是它:

class ViewController: UIViewController {

@IBAction func firstButton(sender: UIButton) {

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

}

8

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

class ViewController: UIViewController {

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

如果您仔细分析错误信息,就会发现这显然是个问题。
错误信息如下:
“(UIButton) -> ()”没有名为“titleLabel”的成员。
这表明您正在尝试访问类型为“(UIButton) -> ()”的对象上的成员(或属性)titleLabel,这意味着它是一个以按钮为输入并返回空的函数。

那就是问题所在。我没有访问发送者,而是试图通过它的名称访问按钮。非常感谢。 - Carl Spackler

5
这将适用于Swift 3:

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

您可以使用此代码更改按钮的文本颜色。

2

UIButton.titlelabel是一个可选属性。如果要更改它的属性,您必须使用可选链接。

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

请阅读有关Swift可选项的内容,以了解详细信息。 http://www.appcoda.com/beginners-guide-optionals-swift/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接