2015-01-04 5 views
9

Я пытаюсь получить текст кнопки, чтобы изменить цвет шрифта на красный при нажатии. Я смотрел похожие записи за несколько месяцев назад, и использование этого кода вызывает ошибку сборки в Xcode 6.1.1. Вот код, который я пытаюсь:Изменение цвета текста кнопки при нажатии

class ViewController: UIViewController { 

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

код ошибки, что я получаю:

'(UIButton) ->()' не имеет элемент с именем '' titleLabel

Любая помощь будет оценена, как я вижу, как мой Swift спасительной благодати после того, как, потеряв терпение, пытаясь узнать Objective C.

ответ

8

Вы пытаетесь изменить цвет текста функции titleLabel, что не имеет смысла. Вместо этого вы должны получить доступ к параметру sender, если вы пытаетесь получить ссылку на кнопку, чтобы получить ее titleLabel. Кроме того, как указывает rakeshbs, titleLabel является необязательным свойством UIButton.

class ViewController: UIViewController { 

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

Если вы нарушите свое сообщение об ошибке, вы поймете, что это явно проблема.

«(UIButton) ->()» не имеет элемент с именем «titleLabel»

который гласит, что вы пытаетесь получить доступ к члену (или свойство) с именем titleLabel на объект type (UIButton) ->(), что означает функцию, которая принимает кнопку в качестве входных данных и ничего не возвращает.

+0

В этом была проблема. Я не получал доступ к отправителю, я пытался получить доступ к кнопке через свое имя. Большое спасибо. –

2

UIButton.titlelabel свойство является необязательным. Вы должны использовать опциональную цепочку для изменения ее свойств.

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

Просьба ознакомиться с быстрыми вариантами, чтобы понять это подробно. http://www.appcoda.com/beginners-guide-optionals-swift/

14

Для тех, кто заинтересован в точной быстрой код, необходимый, чтобы сделать этот вопрос шахтной работы, то здесь:

class ViewController: UIViewController { 

@IBAction func firstButton(sender: UIButton) { 

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

} 
5

это будет работать для Swift 3:

yourButton.setTitleColor (UIColor.blue, для: .normal)

Смежные вопросы