【问题标题】:Changing the image of an UIImage view with a button使用按钮更改 UIImage 视图的图像
【发布时间】:2011-06-25 18:52:17
【问题描述】:

嘿,我的应用中有一个 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 图像以避免混淆。

标签: objective-c ios uiimageview uibutton


【解决方案1】:

替换

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

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

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

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

现在应该可以正常工作了:)

【讨论】:

    【解决方案2】:

    只需设置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 更改图像,我该怎么做?
    • @Sweppi 您需要提供更多详细信息来说明您想要完成的工作。
    • 也许这个视频能更好地解释它:youtube.com/watch?v=WO9NRIHU6oQ&feature=related
    • @Sweppi 一些代码会很好。请告诉我你已经做了什么。
    • 我刚刚注意到我不小心在实现文件中的方法签名末尾留下了一些分号,但它一直在工作并且似乎没有引起问题。现在允许吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多