it-swarm.com.ru

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

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

currencySelector.text = "foobar"

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

185
rocket101

В Swift 3:

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

Иначе:

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

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

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

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

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

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

66
Bendrix

Свифт 3:

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

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

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

Свифт 4:

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

Swift 3.0 

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

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

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

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

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

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

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

2
Christian Navelot

Свифт 3

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

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

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

1
gustavoanalytics

Свифт 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)
0
Giang

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

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

}

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

yourButtonName.setTitle("String", for: .state)
0
Jasani Hardik

Swift 4.2 и выше

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

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

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

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