Como alterar o texto do botão no Swift Xcode 6?

122

Aqui está o que estou tentando fazer. Se você já jogou Halo ou CoD, saberia que poderia mudar o nome de um carregamento de armas.

O que estou fazendo é torná-lo para que você possa alterar seu nome de carregamento usando um campo de texto. Aqui está o problema, o nome do carregamento no menu de carregamento é um botão (para selecionar e exibir informações sobre esse carregamento) e eu poderia escrever isso:

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

Exceto que [classTopButton] é um botão que não permite o sufixo '.text'

GuavaMantis
fonte

Respostas:

322

Você pode fazer:

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

Swift 3 e 4:

button.setTitle("my text here", for: .normal)
Steve Rosenberg
fonte
14
Ou um pouco mais curto. Você pode omitir UIControlStateparte e apenas escrever como button.setTitle("my text here", forState: .Normal).
Mustafa 29/10
3
Eu acho que ajuda mencionar: buttoné um IBOutlet(em contraste com o IBActionque contém essa linha de código) se você estiver usando o Storyboard.
Sergi
23

No Xcode 8 - Swift 3 :

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

Nikola Lukic
fonte
3
O segundo argumento é agora em .normalvez de .Normal.
Ted Hopp
1
Capital .Normaldará um erro agora. Undercase agora está correto. .normal
Joshua Dance
Devo dizer resposta original era: button.setTitle ( "entertext", para: .Normal) e é variante trabalhando para primeira versão do Xcode com suporte SWIFT 3.0
Nikola Lukic
7

Agora é isso para o Swift 3,

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

(A declaração constante da variável não é necessária, apenas certifique-se de usar o remetente a partir do botão como este):

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

Lembre-se de que isso é usado dentro do IBAction do seu botão.

Ty Victorson
fonte
3

Você pode usar o argumento do remetente

  @IBAction func TickToeButtonClick(sender: AnyObject) {

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


}
mzonerz
fonte
É variante trabalhando para primeira versão do Xcode com suporte SWIFT 3.0 depois .Normal se torna .normal
Nikola Lukic
2

trabalho rápido 4, bem como 3

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

onde libero é um uibutton

Giacomo Sighinolfi
fonte
2

NOTA:

linha

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

funciona apenas quando o tipo de título é simples .

insira a descrição da imagem aqui

giacoder
fonte
1

Observe que, se você estiver usando o NSButton, não haverá setTitlefunc. Em vez disso, é uma propriedade.

@IBOutlet weak var classToButton: NSButton!

. . .


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

No Swift 4, tentei tudo isso anteriormente, mas roda apenas:

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