Изменение текста UIButton программно быстро

Простой вопрос. У меня есть UIButton, currencySelector, и я хочу программно изменить текст. Вот что у меня есть:

currencySelector.text = "foobar"

Xcode дает мне ошибку "Ожидаемая декларация". Что я делаю неправильно, и как я могу изменить текст кнопки?

Ответ 1

В Свифте 3, 4, 5:

button.setTitle("Button Title",for: .normal)

Иначе:

button.setTitle("Button Title", forState: UIControlState.Normal)

Ответ 2

Просто уточнение для тех новых для Swift и программирования iOS. Ниже строки кода:

button.setTitle("myTitle", forState: UIControlState.Normal)

применяется только к IBOutlets, а не к IBActions.

Итак, если ваше приложение использует кнопку в качестве функции для выполнения какого-либо кода, скажем, воспроизведения музыки, и вы хотите изменить заголовок из Play to Pause на основе переменной переключения, вам также нужно создать IBOutlet для этой кнопки.

Если вы попытаетесь использовать button.setTitle против IBAction вы получите сообщение об ошибке. Это очевидно, когда вы это знаете, но для noobs (все мы были) это полезный совет.

Ответ 3

Swift 4:

    for state: UIControlState in [.normal, .highlighted, .disabled, .selected, .focused, .application, .reserved] {
        button.setTitle(NSLocalizedString("Title", comment: ""), for: state)
    }

Ответ 4

Swift 3:

Установить название кнопки:

//for normal state:
my_btn.setTitle("Button Title", for: .normal)

// For highlighted state:
my_btn.setTitle("Button Title2", for: .highlighted)

Ответ 5

Swift 3.0

// Standard State
myButton.setTitle("Title", for: .normal)

Ответ 6

Изменение заголовка при его присвоении немного отличается:

Я только что столкнулся с проблемой: если у вас есть UIButton с атрибутом заголовка, вы должны использовать:

my_btn.setAttributedTitle(NSAttributedString(string: my_title), for: my_state)

как, согласно Apple SetTitle Doc:

Если для кнопки установить заголовок и присвоенный заголовок, кнопка предпочитает использовать назначенный заголовок над этим.

У меня был атрибутивный заголовок, и я попытался установить заголовок, но безрезультатно...

Ответ 7

Swift 3

Когда вы делаете @IBAction:

@IBAction func btnAction(_ sender: UIButton) {
  sender.setTitle("string goes here", for: .normal)
}

Это устанавливает отправителя как UIButton (вместо Any), поэтому он нацеливает btnAction как UIButton

Ответ 8

Swift 4.2 и выше

используя кнопку IBOutlet

btnOutlet.setTitle("New Title", for: .normal)

используя кнопку IBAction

@IBAction func btnAction(_ sender: UIButton) {
  sender.setTitle("New Title", for: .normal)
}

Ответ 9

Swift 3

let button: UIButton = UIButton()
button.frame = CGRect.init(x: view.frame.width/2, y: view.frame.height/2, width: 100, height: 100)
button.setTitle("Title Button", for: .normal)

Ответ 10

Чтобы установить заголовок для кнопки в Xcode, используя swift - 04: сначала создайте метод с именем setTitle с параметром title и состоянием UIController, как показано ниже;

func setTitle(_ title : String?, for state : UIControl.State)   {

}

и вызовите этот метод в вашем методе действия кнопки как;

yourButtonName.setTitle("String", for: .state)