2014-10-12 10 views
150

Domanda semplice qui. Ho un UIButton, currencySelector e voglio cambiare il testo a livello di programmazione. Ecco cosa ho:Modifica del testo di UIButton a livello di codice rapido

currencySelector.text = "foobar" 

Xcode mi dà l'errore "Dichiarazione prevista". Cosa sto facendo male e come posso cambiare il testo del pulsante?

risposta

414

In Swift 3:

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

Altrimenti:

button.setTitle("Button Title", forState: UIControlState.Normal) 
+25

È possibile omettere 'UIControlState'. per esempio. 'forState: .Normal' – funroll

+6

Swift3 è ora' .normal' nota la minuscola – Matthew

+2

Swift3 cambia 'forState' a' for' –

56

Solo una precisazione per chi è nuovo a Swift e iOS programmazione. Qui di seguito riga di codice:

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

vale solo per IBOutlets, non IBActions.

Quindi, se la vostra applicazione sta usando un pulsante come una funzione per eseguire del codice, diciamo la riproduzione di musica, e si desidera cambiare il titolo da Play a Pause sulla base di una variabile a ginocchiera, è necessario creare anche un IBOutlet per quel pulsante.

Se si tenta di utilizzare button.setTitle in uno IBAction si verificherà un errore. È ovvio una volta che lo sai, ma per i noobs (eravamo tutti) questo è un suggerimento utile.

+1

Sì, Stavo per google esattamente questo fino a quando ho visto la tua risposta. Grazie! +1 – Evernoob

+1

È un pattern in IOS che mi ha messo un po 'a scoprire. Esistono attributi degli elementi dell'interfaccia utente a cui non si ha accesso a meno che non sia stato creato un IBOutlet. Se mai stai tentando di modificare un attributo di un'interfaccia utente e non riesci ad accedervi, assicurati di avere sia l'IBAction che sta eseguendo del codice, sia l'IBOutlet che fornisce l'accesso agli attributi. – Bendrix

+5

Questa risposta non ha senso. Il 'mittente' dell'azione sarà il pulsante. Puoi applicare qualsiasi cosa desideri al 'mittente'. Non hai bisogno di uno sbocco per farlo. – rmaddy

3

Swift 3:

Imposta il titolo pulsante:

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

// For highlighted state: 
my_btn.setTitle("Button Title2", for: .highlighted) 
1

Swift 3

Quando si effettua la @IBAction:

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

Imposta il mittente come UIButton (invece di Any) quindi si rivolge a btnAction come UIButton

.210
4

Swift 3,0

// Standard State 
myButton.setTitle("Title", for: .normal) 
0

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)