用按钮更改UIImage视图的图像

7

嗨,我在我的应用程序中有一个ImageView,我希望用户能够通过点击按钮更改该ImageView中的图像。这是我得到的代码:

在.h文件中:

@interface BGViewController : UIViewController {

    IBOutlet UIImageView *image;

}

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

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

在.m文件中。
@synthesize image;

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

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

}

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

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


}

顺便提一下,每张图片都有一个按钮!

应用程序已经构建完成,但是当我点击其中任意一个按钮时,什么也没有发生。


你应该将你的UIImageView命名为imageView,将UIImage命名为image以避免混淆。 - clocksmith
2个回答

12

替换

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

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

使用

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

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

现在应该能正常工作了 :)


4

只需设置UIImageViewimage属性:

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

你的方法实现中也存在语法错误,请删除方法签名后面的分号(;)。
如果我设计这个类,我会使用一个操作方法,并使用sender参数的tag属性来索引到NSString对象的数组中。(对于第一个按钮,tag将是0,而第二个将是1,以此类推。)
你应该将你的UIImageView ivar重命名为imageView以减少歧义。
@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

好的,谢谢!如果我想使用UIScrollView更换图像,我该怎么做? - Tapy
@Sweppi,您需要提供更多有关您想要实现的具体细节。 - Jacob Relkin
也许这个视频能更好地解释它:http://www.youtube.com/watch?v=WO9NRIHU6oQ&feature=related - Tapy
@Sweppi 一些代码会很好。请展示一下你已经完成了什么。 - Jacob Relkin
我刚刚注意到我在实现文件中的方法签名末尾不小心留下了一些分号,但它一直正常工作,并且似乎没有引起问题。现在这是允许的吗? - Marty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接