2011-04-07 10 views
19

Tengo un UIButton en mi vista que dice "DETENER". Cuando se presiona, debería (detener la reproducción, por supuesto, y) cambiar su etiqueta a "RTN TO ZERO". Esto es sencillo:El cambio de texto en UIButton no se pega

stopButton.titleLabel.text = @"RTN TO ZERO";

Sin embargo, el cambio sólo aparece durante una fracción de segundo. No se pega. Supongo que el botón (que se resalta cuando se presiona) acepta y muestra la nueva etiqueta, pero de alguna manera el resaltado se invierte solo más tarde, restaurando el botón al aspecto que tenía antes de presionarlo, sin respetar el cambio de texto de la etiqueta. El botón está concebido en IB, no programáticamente.

Me siento estúpido. ¿Puede alguien indicarme el camino correcto?

+0

¿Qué eventos tiene el código para cambiar el título? ¿Podrías proporcionar más detalles? –

Respuesta

51

En el controlador de botón, probar este

 
[stopButton setTitle:@"RTN TO ZERO" forState:UIControlStateNormal]; 

En lugar de cambiar directamente text propiedad de titleLabel método de uso setTitle:forState: para establecer el título en diferentes estados. Verifique el manual para conocer los detalles de los estados disponibles.

+1

Tienes razón. La capacidad de lectura ES una ventaja. Como dije, me siento estúpido. ¡Muchas gracias! –

+4

Solo como una nota lateral; este enfoque no funciona si está usando texto atribuido en IB. Tienes que usar setAttributedTitle: forState :. –

1

versión Swift

myButton.setTitle("button text", forState: UIControlState.Normal) 

Uso setAttributedTitle:forState para el texto atribuido. Consulte here para saber cómo hacer cadenas atribuidas en Swift.

Cuestiones relacionadas