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

171

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

currencySelector.text = "foobar"

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

Теги:
xcode
uibutton

7 ответов

435
Лучший ответ

В Swift 3:

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

В противном случае:

button.setTitle("Button Title", forState: UIControlState.Normal)
  • 28
    Вы можете опустить UIControlState . например, forState: .Normal
  • 10
    Swift3 сейчас. .normal обратите внимание на нижний регистр
Показать ещё 3 комментария
63

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

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

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

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

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

  • 1
    Да, я собирался гуглить именно это, пока не увидел ваш ответ. Спасибо! +1
  • 1
    Это паттерн в IOS, который занял у меня некоторое время, чтобы обнаружить. Есть атрибуты элементов пользовательского интерфейса, к которым у вас нет доступа, если только не создан IBOutlet. Если вы когда-либо пытаетесь изменить атрибут пользовательского интерфейса и не можете получить к нему доступ, убедитесь, что у вас есть как IBAction, на котором выполняется некоторый код, так и IBOutlet, который предоставляет доступ к атрибутам.
Показать ещё 3 комментария
6

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)
4

Swift 4:

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

Swift 3

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

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

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

0

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)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню