AVISO: Cualquier pregunta que no cumpla ninguno de estos criterios podrá ser borrada sin previo aviso.

1
1

Hola, he creado un UIButton al que le he asignado una imagen (x.png) y al presionar el boton quiero que la propiedad de la imagen del boton cambie a y.png. Y si vuelvo a presionar que vuelva a tener la imagen x.png etc... Alguien sabe como es?

preguntado 27 May '11, 15:25

vito's gravatar image

vito
31124


Buenas,

debes reasignar la imagen de fondo de tu botón, imaginemos que el outlet de tu botón se llama miboton y el nombre del fichero de imagen lo llamamos nombreDeImagen, el código quedaría así:

UIImage* tmp = [UIImage imageNamed:nombreDeImagen]; ``[miBoton setBackgroundImage:tmp forState:UIControlStateNormal];

Esto asigna la imagen de fondo para el botón en estado normal, puedes definir imágenes cuando el botón está seleccionado, resaltado, etc

enlace permanente

respondido 27 May '11, 15:35

Tyflos's gravatar image

Tyflos
996324351

editó 27 May '11, 15:38

Se puede hacer como ha comentado Tyflos o bien por IB poniendo la imagen en el campo background image del state selected. Es lo mismo que Tyflos pero sin codigo. Elije cual te gusta/favorece mas!

enlace permanente

respondido 27 May '11, 15:46

urikpd's gravatar image

urikpd ♦
681657881

He estado intentado haciéndolo desde IB, añado un botón y en atributos activo “default state configuration“ y elijo x.png, después le doy a activo “selected state configuration“ y selecciono y.png.

Ahora mismo en el archivo h tengo lo siguiente

#import <UIKit/UIKit.h / @interface logros : UIViewController { IBOutlet UIButton *boton; } / @property(retain,nonatomic)UIButton *boton;@end

en el archivo m:

#import "prueba.h"@implementation prueba / @synthesize boton; / - (void)dealloc { [boton release]; [super dealloc];}

Relaciono el outlet boton con el uibutton en IB y cuando ejecuto el programa y al mostrar la vista se sale del programa.Esto intentando hacerlo según urikpd me debe de faltar algo creo.

Si intento como dices Tyflos añadiría en .h un ibaction cambiar (por ejemplo) y en .m dentro del ibaction las líneas que pusiste no?

Perdonad mi torpeza que estoy empezando en esto xD.

enlace permanente

respondido 27 May '11, 19:55

vito's gravatar image

vito
31124

Hola,

como indicas, las líneas de código que indiqué deben ir en un IBAction, como por ejemplo:

  • (IBAction) pulsaBoton:(id) sender { UIImage* tmp = [UIImage imageNamed:nombreDeImagen]; ``[miBoton setBackgroundImage:tmp forState:UIControlStateNormal]; }

si lo que quieres es cambiar de imagen cada vez que pulses,podrías usar un flag o variable de control para hacerlo. La cosa quedaría así:

- (IBAction) pulsaBoton:(id) sender { NSString * nombreDeImagen; if (variableControl == YES ) { // cambiamos nombreDeImagen = [NSString stringWithFormat: @"fichero1.png"]; variableControl = NO; } else { // imagen inicial nombreDeImagen = [NSString stringWithFormat: @"fichero2.png"]; variableControl = YES; } UIImage* tmp = [UIImage imageNamed:nombreDeImagen]; ``[miBoton setBackgroundImage:tmp forState:UIControlStateNormal]; } La variable control la debes declarar en el @interface de tu clase delegada: @interface .... { // ... Boolean variableControl = YES; // ... }

// .. @end </conde>

enlace permanente

respondido 27 May '11, 21:26

Tyflos's gravatar image

Tyflos
996324351

Esta respuesta debería haber sido un comentario....

(27 May '11, 22:32) Tyflos
Tu respuesta:
Activar/desactivar vista previa