如何通过编程方式更改UIImageView图像

4
在我的iOS应用程序中,我通过编程方式创建UIImageView,如下所示:
for (int i=0; i<20; i++) {

                                   productID=[products objectAtIndex:i];

                                   UIButton * button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
                                   [button setFrame:CGRectMake(column*197+38 , row*350+8, 159, 45)];
                                   //[button setImage:redButtonImage forState:UIControlStateNormal];
                                   [button addTarget:self
                                              action:@selector(buttonAction:)
                                    forControlEvents:UIControlEventTouchUpInside];
                                   button.tag = productID;
                                   [scrollView addSubview:button];



                                   UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(column*197+170, row*350+25, 13, 13)];
                                   imageView.tag=productID;
                                   UIImage *image = [UIImage imageNamed:@"redImage.png"];
                                   [imageView setImage:image];
                                   [scrollView addSubview:imageView];


                               }

在我的buttonActon中,我想将那个UIImageView的图片更改为另一张图片。但我无法做到。能有人帮助我吗?谢谢。


1
你不能这样做,因为?你尝试过什么? - Pfitz
3个回答

12

试试这样做,

for (int i=0; i<20; i++) {

                                   productID=[products objectAtIndex:i];

                                   UIButton * button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
                                   [button setFrame:CGRectMake(column*197+38 , row*350+8, 159, 45)];
                                   //[button setImage:redButtonImage forState:UIControlStateNormal];
                                   [button addTarget:self
                                              action:@selector(buttonAction:)
                                    forControlEvents:UIControlEventTouchUpInside];
                                   button.tag = 100+productID;
                                   [scrollView addSubview:button];



                                   UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(column*197+170, row*350+25, 13, 13)];
                                   imageView.tag=productID;
                                   UIImage *image = [UIImage imageNamed:@"redImage.png"];
                                   [imageView setImage:image];
                                   [scrollView addSubview:imageView];


                               }

将此代码放在按钮操作方法(button action method)中,并将ImageView标签(imgview.tag)替换为对应的标签

     UIImageView *img=(UIImageView *)[scrollView viewWithTag:imgview.tag];
    img.image=[UIImage imageNamed:@"name.png"];

我写了同样的代码,但是出现了这个错误:- [UIRoundedRectButton setImage:]:向实例0x8993130发送了未识别的选择器。 - bdkhsn
问题在于按钮和图像都具有相同的标签值。 - Balu
在self.view的位置替换scrollView。 - Balu
为两个图像和按钮分别赋不同的标签值,那么它就能工作了。 - Balu

3
代替这个:
imageView.tag=UrunId;

撰写:

imageView.tag = productID + 100;

因为每个图像视图都需要一个唯一的标记。

然后实现buttonAction:

- (void)buttonAction:(UIButton *)sender
{
  UIImageView *imageView = (UIImageView *)[scrollView viewWithTag:(sender.tag+100)];
  [imageView setImage:yourImage];
}

因为 @Sunny 在你之前几秒钟就给出了答案。再次感谢。 - bdkhsn

2

请尝试使用这个标签:

您应该为按钮和图像使用不同的标签。因此,请首先像这样给出不同的标签...

UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(column*197+170, row*350+25, 13, 13)];
                                   imageView.tag=button.tag+1;
                                   UIImage *image = [UIImage imageNamed:@"redImage.png"];
                                   [imageView setImage:image];
                                   [scrollView addSubview:imageView];

在此之后,执行以下操作...

- (void)buttonAction:(UIButton *)sender
{
  UIImageView *imageView = (UIImageView *)[scrollView viewWithTag:sender.tag+1];
  imageView.image=[UIImage imageNamed:@"imageName"];

}

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