winter summer iphone uibutton

iphone - summer - ¿Es posible actualizar UIButton title/text programmatically?



salesforce summer 18 release date (13)

Tengo un UIButton , que cuando se presiona, muestra una nueva vista donde el usuario puede cambiar algunas configuraciones. Cuando se descarta la vista, me gustaría actualizar el título / texto del UIButton para reflejar el nuevo estado. Estoy llamando:

[myButton setTitle: @"myTitle" forState: UIControlStateNormal]; [myButton setTitle: @"myTitle" forState: UIControlStateApplication]; [myButton setTitle: @"myTitle" forState: UIControlStateHighlighted]; [myButton setTitle: @"myTitle" forState: UIControlStateReserved]; [myButton setTitle: @"myTitle" forState: UIControlStateSelected]; [myButton setTitle: @"myTitle" forState: UIControlStateDisabled];

Pero nunca parece cambiar del texto / título original como se especifica en IB.


¡Resulta que los documentos te dicen la respuesta! El UIButton ignorará el cambio de título si ya tiene una Cadena Atribuida para usar (parece ser el valor predeterminado que se obtiene al usar el constructor de interfaz Xcode).

Usé lo siguiente:

[self.loginButton setAttributedTitle:[[NSAttributedString alloc] initWithString:@"Error !!!" attributes:nil] forState:UIControlStateDisabled]; [self.loginButton setEnabled:NO];


¿Tiene el botón especificado como IBOutlet en su clase de controlador de vista, y está conectado correctamente como una salida en Interface Builder (Ctrl arrastra desde la nueva toma de referencia al propietario del archivo y selecciona su objeto UIButton)? Ese suele ser el problema que tengo cuando veo estos síntomas.

Editar: Si bien este no es el caso aquí, algo como esto también puede suceder si configuras un título atribuido al botón, luego tratas de cambiar el título y no el título atribuido.


@funroll tiene toda la razón. Aquí puede ver lo que necesitará Asegúrese de que la función solo se ejecute en el hilo principal . Si no desea tratar con subprocesos, puede hacer esto, por ejemplo: crear NSUserDefaults y en ViewDidLoad chequear la condición se presionó el botón en otra vista o no (en otra vista establecida en la información necesaria NSUserDefaults) y dependiendo de las condiciones establecidas título necesario para su UIButton, entonces [yourButton setTitle: @ "Title" forState: UIControlStateNormal];


A veces puede ser realmente complicado. ¡La manera más fácil es " actualizar " la vista de botón!

//Do stuff to your button here. For example: [mybutton setEnabled:YES]; //Refresh it to new state. [mybutton setNeedsDisplay];


Asegúrate de estar en el hilo principal.

Si no, aún guardará el texto del botón. Estará allí cuando inspeccione el objeto en el depurador. Pero en realidad no actualizará la vista.


Aunque se resolvió el problema de Caffeine Coma, me gustaría ofrecer otra posible causa para que el título no se muestre en un UIButton.

Si configura una imagen para UIButton usando

- (void)setImage:(UIImage *)image forState:(UIControlState)state

Puede cubrir el título. Descubrí esto por las malas e imagino que algunos de ustedes terminan leyendo esta página por la misma razón.

Use este método en su lugar

- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state

para la imagen del botón y el título no se verán afectados.

Probé esto con botones creados programáticamente y botones creados en .xib


Descubrí otro problema. Puede ser un error introducido en iOS 5, pero pensé que podría señalarlo a cualquier persona que lo encuentre.

Si no configura ningún texto predeterminado para el botón en el XIB, nunca aparecerá texto si lo configura programáticamente. Y si configura el texto en el XIB, cualquier texto que posteriormente asigne al botón mediante programación se truncará al tamaño del texto predeterminado.

Y finalmente, si muestra la vista con su botón y luego invoca otra vista (como una Hoja de Acción) y luego la descarta, el texto que asignó al botón programáticamente se borrará y la leyenda del botón volverá a lo que haya configurado arriba en el XIB.


Rápido:

button.setTitle("Click", forState: .Normal)


Resolví el problema simplemente estableciendo el parámetro de título para UIControlStateNormal, y automáticamente funciona en los otros estados. El problema parece ser cuando configura otro UIControlState.

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


Seguí teniendo problemas con esto, la única solución fue agregar una imagen y una etiqueta como subvistas al uibutton. Luego descubrí que el problema principal era que estaba usando un UIButton con título: Atribuido. Cuando lo cambié a Plain, simplemente estableciendo el título ¡Label.text hizo el truco!


Swift Prueba esto

button.setTitle("metin", forState: .Normal)


Una causa más posible es esta:

Si intenta establecer el título del botón en el método (id)initWithNibName: ... , la propiedad del botón seguirá siendo nula. Todavía no se ha asignado al UIButton.

Debe asegurarse de que está configurando sus botones en un método como (void)viewWillLoad o (void)viewWillAppear , pero es probable que no desee configurarlos tan tarde como (void)viewDidAppear .


para rápido:

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