Hey, I have an ImageView in my app and I want the user to be able to change the image in that image view by clicking on a button.This is the code I got
In .h
@interface BGViewController : UIViewController {
IBOutlet UIImageView *image;
}
@property (nonatomic, retain) IBOutlet UIImageView *image;
-(IBAction)img1:(id)sender;
-(IBAction)img2:(id)sender;
and in .m
@synthesize image;
-(IBAction)img1:(id)sender; {
UIImage *image = [UIImage imageNamed: @"Main.png"];
}
-(IBAction)img2:(id)sender; {
UIImage *image = [UIImage imageNamed: @"Themes.png"];
}
There is one button for each image by the way!
The app builds but when I click on either one of the buttons nothings happens.
Replace
UIImage *image = [UIImage imageNamed: @"Main.png"];
and
UIImage *image = [UIImage imageNamed: @"Themes.png"];
with
image.image = [UIImage imageNamed:@"Main.png"];
and
image.image = [UIImage imageNamed:@"Themes.png"];
Now it should work fine :)
Simply set the image
property of the UIImageView
:
imageView.image = [UIImage imageNamed:@"Themes.png"];
You also have a syntax error in your method implementations, get rid of the semicolon (;
) after your method signatures.
If I were designing this class, I'd use one action method and use the tag
property of the sender
argument to index into an array of NSString
objects. (For the first button, the tag
would be 0
, while the second would be 1
, etc.)
You should rename your UIImageView
ivar to imageView
to reduce ambiguity.
@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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With