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'

Réponses:


322

Tu peux faire:

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

Swift 3 et 4:

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

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 )


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.


3

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

  @IBAction func TickToeButtonClick(sender: AnyObject) {

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


}

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

REMARQUE:

ligne

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

fonctionne uniquement lorsque le type de titre est Plain .

entrez la description de l'image ici


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"

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)
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.