2015-01-04 5 views
9

Sto provando a ottenere il testo di un pulsante per cambiare il colore del carattere in rosso quando toccato. Ho guardato post simili da mesi fa e l'uso di quel codice causa un errore di compilazione in Xcode 6.1.1. Ecco il codice che sto cercando:Cambiare il colore del testo di un pulsante quando viene toccato

class ViewController: UIViewController { 

    @IBAction func firstButton(sender: UIButton) { 
     firstButton.titleLabel.textColor = UIColor.redColor() 
    } 
} 

Il codice di errore che ottengo è:

'(UIButton) ->()' non ha un membro denominato 'titleLabel'

Qualsiasi aiuto sarà molto apprezzato come la vedo Swift come la mia grazia salvifica dopo aver pazienza persa nel cercare di imparare Objective C.

risposta

8

Si sta tentando di modificare il colore del testo della funzione titleLabel, che non ha senso. Dovresti accedere al parametro sender se invece stai cercando di ottenere un riferimento al pulsante per ottenere il valore titleLabel. Inoltre, come indicato da rakeshbs, titleLabel è una proprietà facoltativa di UIButton.

class ViewController: UIViewController { 

    @IBAction func firstButton(sender: UIButton) { 
     sender.titleLabel?.textColor = UIColor.redColor() 
    } 
} 

Se si interrompe il messaggio di errore, ci si rende conto che questo è chiaramente il problema.

'(UIButton) ->()' non ha un membro denominato 'titleLabel'

cui si afferma che si sta tentando di accedere a un membro (o proprietà) denominato titleLabel su un oggetto di digitare (UIButton) ->(), che indica una funzione che accetta un pulsante come input e non restituisce nulla.

+0

Questo era il problema. Non stavo accedendo al mittente, stavo cercando di accedere al pulsante attraverso il suo nome. Grazie mille. –

14

Per chiunque sia interessato l'esatto codice swift necessario per rendere questa questione del lavoro mio, eccolo:

class ViewController: UIViewController { 

@IBAction func firstButton(sender: UIButton) { 

    sender.setTitleColor(UIColor.redColor(), forState: UIControlState.Normal) 

} 
5

questo lavoro per Swift 3:

yourButton.setTitleColor (UIColor.blue, per: .normal)