web-dev-qa-db-fra.com

Changer le texte de UIButton rapidement par programmation

Simple question ici. J'ai un UIButton, currencySelector et je souhaite modifier le texte par programme. Voici ce que j'ai

currencySelector.text = "foobar"

Xcode me donne l'erreur "Déclaration attendue". Qu'est-ce que je fais de travers et comment puis-je modifier le texte du bouton?

185
rocket101

Dans Swift 3:

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

Autrement:

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

Juste une clarification pour ceux qui découvrent Swift et iOS programmation. En dessous de la ligne de code:

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

s'applique uniquement à IBOutlets, pas IBActions.

Ainsi, si votre application utilise un bouton en tant que fonction pour exécuter du code, par exemple, la lecture de musique, et que vous souhaitez changer le titre de Play à Pause en fonction d'une variable à basculement, vous devez également créer un IBOutlet pour ce bouton.

Si vous essayez d'utiliser button.setTitle avec une IBAction, vous obtiendrez une erreur. C'est évident une fois que vous le savez, mais pour les noobs (nous étions tous), c'est un conseil utile.

66
Bendrix

Swift 3:

Définir le titre du bouton:

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

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

Swift 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

Changer de titre quand on lui attribue est un peu différent:

Je viens de rencontrer un problème: Si vous avez un UIButton avec un titre attribué, vous devez utiliser:

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

comme, par Apple SetTitle Doc :

Si vous définissez un titre et un titre attribué au bouton, celui-ci préfère utiliser le titre attribué par rapport à celui-ci.

J'avais un titre attribué et j'ai essayé de mettreTitle dessus, sans effet ...

2
Christian Navelot

Swift 3

Quand vous faites le @IBAction:

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

Ceci définit l'expéditeur sur UIButton (au lieu de Any) afin de cibler le btnAction en tant que UIButton.

1
gustavoanalytics

Swift 4.2 et supérieur

en utilisant le bouton IBOutlet

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

en utilisant le bouton IBAction

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

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)
0
Giang

Pour définir un titre pour un bouton dans Xcode avec Swift-04: Créez d’abord une méthode appelée setTitle avec le titre du paramètre et l’état UIController comme ci-dessous;

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

}

et rappelez-vous cette méthode dans votre méthode d'action de bouton.

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