¿Cómo cambiar el texto del botón en Swift Xcode 6?

122

Esto es lo que intento hacer. Si alguna vez jugaste Halo o CoD, sabrías que puedes cambiar el nombre de una carga de armas.

Lo que estoy haciendo es hacerlo para que pueda cambiar su nombre de carga utilizando un campo de texto. Aquí está el problema, el nombre de carga en el menú de carga es un botón (para seleccionar y ver información sobre esa carga) y podría escribir esto:

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

Excepto que [classTopButton] es un botón que no permite el sufijo '.text'

GuayabaMantis
fuente

Respuestas:

322

Tu puedes hacer:

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

Swift 3 y 4:

button.setTitle("my text here", for: .normal)
Steve Rosenberg
fuente
14
O un poco más corto. Puede omitir UIControlStateparte y simplemente escribir como button.setTitle("my text here", forState: .Normal).
mustafa
3
Creo que es útil mencionar: buttones un IBOutlet(en contraste con el IBActionque contiene esta línea de código) si está aprovechando Storyboard.
Sergi
23

En Xcode 8 - Swift 3 :

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

Nikola Lukic
fuente
3
El segundo argumento es ahora en .normallugar de .Normal.
Ted Hopp
1
El capital .Normaldará un error ahora. Undercase ahora es correcto. .normal
Joshua Dance
Debo decir que la respuesta original fue: button.setTitle ("entertext", para: .Normal) y es una variante de trabajo para la primera versión de Xcode con soporte swift 3.0
Nikola Lukic
7

Ahora es esto para Swift 3,

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

(La declaración constante de la variable no es necesaria, solo asegúrese de usar el remitente desde el botón de esta manera):

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

Recuerde que esto se usa dentro de la IBAction de su botón.

Ty Victorson
fuente
3

Puedes usar el argumento del remitente

  @IBAction func TickToeButtonClick(sender: AnyObject) {

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


}
mzonerz
fuente
Es una variante de trabajo para la primera versión de Xcode con soporte para swift 3.0 más tarde. Normal se convierte en .normal
Nikola Lukic
2

Swift 4 funciona tan bien como 3

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

donde libero es un uibutton

Giacomo Sighinolfi
fuente
2

NOTA:

línea

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

funciona solo cuando el tipo de título es simple .

ingrese la descripción de la imagen aquí

giacoder
fuente
1

Tenga en cuenta que si está usando NSButton no hay setTitlefunc, en cambio, es una propiedad.

@IBOutlet weak var classToButton: NSButton!

. . .


classToButton.title = "Some Text"
Nathan F.
fuente
1

En Swift 4 probé todo esto anteriormente, pero solo se ejecuta:

@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
fuente