2012-06-21 12 views
29

Ho uno UIButton che dovrebbe avere 2 stati - "Riproduci" e "Pausa"; Ad esempio, - la prima volta che l'utente lo vede dice "Play" e quindi ogni volta che l'utente fa clic, dovrebbe passare tra "Play" e "Pause".Come modificare la proprietà textLabel in UIButton a livello di codice in iOS?

Sono riuscito a creare il controller stesso - il contenuto è riprodotto e messo in pausa correttamente - ma non riesco a cambiare il testo dell'etichetta di testo UIButton.

io uso:

myButton.titleLabel.text = @"Play"; 

myButton.titleLabel.text = @"Pause"; 

Non funziona. Il testo non sta cambiando. Ho anche provato [myButton.titleLabel setText: @ "Pause"] e non funziona altrettanto bene.

Come posso impostarlo?

risposta

66

Dovrebbe essere:

[myButton setTitle:@"Play" forState:UIControlStateNormal]; 

è necessario passare la state pure. Puoi controllare gli altri herehere.

È quindi possibile fare qualcosa del genere:

[myButton setTitle:@"Play" forState:UIControlStateNormal]; 
[myButton setTitle:@"Stop" forState:UIControlStateSelected]; 
1

E se si desidera caricare sul caricamento della pagina, e il supporto lingua localizzata:

-(void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    if (self.flagToChangeLabel){ 
     NSString* newBtnTitle = NSLocalizedString(@"LOCALIZED_KEY", nil); 
     [self.laterButton setTitle:newBtnTitle forState:UIControlStateNormal]; 
     [self.laterButton setTitle:newBtnTitle forState:UIControlStateSelected]; 
    } 
} 
2

ho trovato questo per essere un po 'fuori data in cui sono state aggiunte stringhe attribuite. Apparentemente i titoli di pulsanti assegnati in uno storyboard sono attribuiti a stringhe. I titoli attribuiti hanno la precedenza sui titoli NSString, quindi se si desidera utilizzare una stringa semplice come titolo è necessario rimuovere prima il titolo attribuito. Ho fatto come sotto, anche se potrebbe esserci un modo migliore. Potresti, ovviamente, rendere il tuo nuovo titolo anche una stringa attribuita.

[myButton setAttributedTitle: nil  forState: 0xffff]; 
[myButton   setTitle: @"Play" forState: UIControlStateNormal]; 
Problemi correlati