Ответ 1
В Свифте 3, 4, 5:
button.setTitle("Button Title",for: .normal)
Иначе:
button.setTitle("Button Title", forState: UIControlState.Normal)
Простой вопрос. У меня есть UIButton, currencySelector, и я хочу программно изменить текст. Вот что у меня есть:
currencySelector.text = "foobar"
Xcode дает мне ошибку "Ожидаемая декларация". Что я делаю неправильно, и как я могу изменить текст кнопки?
В Свифте 3, 4, 5:
button.setTitle("Button Title",for: .normal)
Иначе:
button.setTitle("Button Title", forState: UIControlState.Normal)
Просто уточнение для тех новых для Swift и программирования iOS. Ниже строки кода:
button.setTitle("myTitle", forState: UIControlState.Normal)
применяется только к IBOutlets
, а не к IBActions
.
Итак, если ваше приложение использует кнопку в качестве функции для выполнения какого-либо кода, скажем, воспроизведения музыки, и вы хотите изменить заголовок из Play
to Pause
на основе переменной переключения, вам также нужно создать IBOutlet
для этой кнопки.
Если вы попытаетесь использовать button.setTitle
против IBAction
вы получите сообщение об ошибке. Это очевидно, когда вы это знаете, но для noobs (все мы были) это полезный совет.
for state: UIControlState in [.normal, .highlighted, .disabled, .selected, .focused, .application, .reserved] {
button.setTitle(NSLocalizedString("Title", comment: ""), for: state)
}
Swift 3:
Установить название кнопки:
//for normal state:
my_btn.setTitle("Button Title", for: .normal)
// For highlighted state:
my_btn.setTitle("Button Title2", for: .highlighted)
Swift 3.0
// Standard State
myButton.setTitle("Title", for: .normal)
Изменение заголовка при его присвоении немного отличается:
Я только что столкнулся с проблемой: если у вас есть UIButton с атрибутом заголовка, вы должны использовать:
my_btn.setAttributedTitle(NSAttributedString(string: my_title), for: my_state)
как, согласно Apple SetTitle Doc:
Если для кнопки установить заголовок и присвоенный заголовок, кнопка предпочитает использовать назначенный заголовок над этим.
У меня был атрибутивный заголовок, и я попытался установить заголовок, но безрезультатно...
Swift 3
Когда вы делаете @IBAction:
@IBAction func btnAction(_ sender: UIButton) {
sender.setTitle("string goes here", for: .normal)
}
Это устанавливает отправителя как UIButton (вместо Any), поэтому он нацеливает btnAction как UIButton
Swift 4.2 и выше
используя кнопку IBOutlet
btnOutlet.setTitle("New Title", for: .normal)
используя кнопку IBAction
@IBAction func btnAction(_ sender: UIButton) {
sender.setTitle("New Title", for: .normal)
}
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)
Чтобы установить заголовок для кнопки в Xcode, используя swift - 04: сначала создайте метод с именем setTitle с параметром title и состоянием UIController, как показано ниже;
func setTitle(_ title : String?, for state : UIControl.State) {
}
и вызовите этот метод в вашем методе действия кнопки как;
yourButtonName.setTitle("String", for: .state)