Comment changer le texte du bouton dans Swift Xcode 6?

122

Voici ce que j'essaye de faire. Si vous avez déjà joué à Halo ou CoD, vous savez que vous pouvez changer le nom d'un chargement d'arme.

Ce que je fais, c'est que vous puissiez changer le nom de votre chargement à l'aide d'un champ de texte. Voici le problème, le nom de chargement dans le menu de chargement est un bouton (pour sélectionner et afficher des informations sur ce chargement) et je pourrais simplement écrire ceci:

@IBAction func renameClassButton(sender: AnyObject) {
    classTopButton.text = "\(classTopTextField)"
}

Sauf que [classTopButton] est un bouton qui n'autorise pas le suffixe '.text'

GoyaveMantis
la source

Réponses:

322

Tu peux faire:

button.setTitle("my text here", forState: .normal)

Swift 3 et 4:

button.setTitle("my text here", for: .normal)
Steve Rosenberg
la source
14
Ou un peu plus court. Vous pouvez omettre une UIControlStatepartie et simplement écrire comme button.setTitle("my text here", forState: .Normal).
mustafa
3
Je pense qu'il est utile de mentionner: buttonest un IBOutlet(contrairement au IBActionqui contient cette ligne de code) si vous utilisez Storyboard.
Sergi
23

Dans Xcode 8 - Swift 3 :

button.setTitle( "entertext" , for: .normal )

Nikola Lukic
la source
3
Le deuxième argument est maintenant .normalau lieu de .Normal.
Ted Hopp
1
Capital .Normalva donner une erreur maintenant. Undercase est maintenant correct. .normal
Joshua Dance
Je dois dire que la réponse originale était: button.setTitle ("entertext", pour: .Normal) et c'est une variante de travail pour la première version de Xcode avec le support Swift 3.0
Nikola Lukic
7

C'est maintenant ça pour Swift 3,

    let button = (sender as AnyObject)
    button.setTitle("Your text", for: .normal)

(La déclaration constante de la variable n'est pas nécessaire, assurez-vous simplement d'utiliser l'expéditeur du bouton comme ceci):

    (sender as AnyObject).setTitle("Your text", for: .normal)

N'oubliez pas qu'il est utilisé dans l'IBAction de votre bouton.

Ty Victorson
la source
3

Vous pouvez utiliser l'argument de l'expéditeur

  @IBAction func TickToeButtonClick(sender: AnyObject) {

        sender.setTitle("my text here", forState: .normal)


}
mzonerz
la source
C'est une variante de travail pour la première version de Xcode avec le support Swift 3.0 plus tard .Normal devient .normal
Nikola Lukic
2

swift 4 fonctionne ainsi que 3

libero.setTitle("---", for: .normal)

où libero est un uibutton

Giacomo Sighinolfi
la source
2

REMARQUE:

ligne

someButton.setTitle("New Title", forState: .normal)

fonctionne uniquement lorsque le type de titre est Plain .

entrez la description de l'image ici

giacoder
la source
1

Notez que si vous utilisez NSButton, il n'y a pas de setTitlefunc, mais plutôt une propriété.

@IBOutlet weak var classToButton: NSButton!

. . .


classToButton.title = "Some Text"
Nathan F.
la source
1

Dans Swift 4, j'ai essayé tout cela auparavant, mais ne fonctionne que:

@IBAction func myButton(sender: AnyObject) {
   sender.setTitle("This is example text one", for:[])
   sender.setTitle("This is example text two", for: .normal)
}
Grzegorz R. Kulesza
la source