2011-02-11 9 views
7

Hola, tengo una ImageView en mi aplicación y quiero que el usuario pueda cambiar la imagen en esa vista de imagen haciendo clic en un botón. Este es el código que obtuveCambiar la imagen de una vista UIImage con un botón

en .h

@interface BGViewController : UIViewController { 

    IBOutlet UIImageView *image; 

} 

@property (nonatomic, retain) IBOutlet UIImageView *image; 

-(IBAction)img1:(id)sender; 
-(IBAction)img2:(id)sender; 

y en .m

@synthesize image; 

-(IBAction)img1:(id)sender; { 

    UIImage *image = [UIImage imageNamed: @"Main.png"]; 

} 

-(IBAction)img2:(id)sender; { 

    UIImage *image = [UIImage imageNamed: @"Themes.png"]; 


} 

Hay un botón para cada imagen por cierto!

La aplicación se crea pero cuando hago clic en cualquiera de los botones, nada sucede.

+0

Debe nombrar su UIImageView imageView y su imagen UIImage para evitar confusiones. – clocksmith

Respuesta

10

Reemplazar

UIImage *image = [UIImage imageNamed: @"Main.png"]; 

y

UIImage *image = [UIImage imageNamed: @"Themes.png"]; 

con

image.image = [UIImage imageNamed:@"Main.png"]; 

y

image.image = [UIImage imageNamed:@"Themes.png"]; 

Ahora debería funcionar bien :)

3

Basta con establecer la propiedad image del UIImageView:

imageView.image = [UIImage imageNamed:@"Themes.png"]; 

También tiene un error de sintaxis en sus implementaciones de métodos, deshacerse del punto y coma (;) después de sus firmas de métodos.

Si estuviera diseñando esta clase, usaría un método de acción y usaría la propiedad tag del argumento sender para indexar en una matriz de objetos NSString. (Para el primer botón, el tag habría 0, mientras que el segundo sería 1, etc.)

debe cambiar el nombre de su UIImageView Ivar a imageView para reducir la ambigüedad.

@interface BGViewController : UIViewController { 
    IBOutlet UIImageView *imageView; 
} 

@property (nonatomic, retain) IBOutlet UIImageView *imageView; 

-(IBAction)changeImage:(id)sender; 

@end 

@implementation BGViewController 

NSString *images[] = { 
    @"Main.png", 
    @"Themes.png" 
}; 

@synthesize imageView; 

-(IBAction)changeImage:(id)sender { 
    imageView.image = [UIImage imageNamed: images[sender.tag]]; 
} 

@end 
+0

¡Ok, gracias! Si quisiera cambiar la imagen con UIScrollView, ¿cómo lo haría? – Tapy

+0

@Sweppi Tendrá que proporcionar más detalles sobre qué es exactamente lo que está tratando de lograr. –

+0

Quizás este video lo explique mejor: http://www.youtube.com/watch?v=WO9NRIHU6oQ&feature=related – Tapy

Cuestiones relacionadas