在iOS中通过编程方式将图像设置为imageView by ID
我正在开发一个iOS应用程序,我有一个for循环来创建图像。 当一个图像收到点击,我想改变图像的背景,只为该图像。我该怎么做 这是我的代码:在iOS中通过编程方式将图像设置为imageView by ID,ios,imageview,Ios,Imageview,我正在开发一个iOS应用程序,我有一个for循环来创建图像。 当一个图像收到点击,我想改变图像的背景,只为该图像。我该怎么做 这是我的代码: for (int i =0; i<dim; i++) { likeImageImageview = [[UIImageView alloc] initWithFrame:CGRectMake(paddWidth*20,7.5,39.6,39.6)]; img0 = [UIImage imageNamed:@"like"]; [li
for (int i =0; i<dim; i++) {
likeImageImageview = [[UIImageView alloc] initWithFrame:CGRectMake(paddWidth*20,7.5,39.6,39.6)];
img0 = [UIImage imageNamed:@"like"];
[likeImageImageview setImage:img0];
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImagesLike)];
singleTap.numberOfTapsRequired = 1;
likeImageImageview.userInteractionEnabled = YES; //l'utente può cliccare
[likeImageImageview setMultipleTouchEnabled:NO]; //non è consentito il multitouch
[likeImageImageview addGestureRecognizer:singleTap];
[row_like addSubview:likeImageImageview];
}
使用此代码,只有最后一个imageview
更改其背景。如何像ID
一样使用“I”
for loop
UIImageView *imageView = …
imageView.tag = i;
所以你需要得到被点击的视图
- (void)tapImagesLike:(UITapGestureRecognizer*)recognizer
{
UIImageView *imageView = (UIImageView*)recognizer.view;
int i = imageView.tag;
// Then you can do the change you need to do here
}
这是在手势识别器点击时应该调用的方法。它只显示最后一个图像,因为您正在for循环中创建一个新实例 试试这个
NSMutableArray *tempImageArray=[[NSMutableArray alloc]init];
for (int i =0; i<10; i++) {
UIImageView *likeImageImageview = [[UIImageView alloc] initWithFrame:CGRectMake(20,7.5,39.6,39.6)];
UIImage *img0 = [UIImage imageNamed:@"like"];
[likeImageImageview setImage:img0];
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImagesLike:)];
singleTap.numberOfTapsRequired = 1;
[self.view addGestureRecognizer:singleTap];
[row_like addSubview:likeImageImageview];
[tempImageArray addObject:likeImageImageview];
}
self.imageArray=tempImageArray;
[tempImageArray release];
这也要求您在创建手势时将
@selector(tapImagesLike)
更改为@selector(tapImagesLike:)
。好的,现在它可以工作了,但我收到以下警告:不兼容的指针类型从“UIView”分配给“UIImageView”。那么,如何将参数“i”传递给该方法?因为我必须使用它。一种解决方案是使用图像视图的标记值并将其设置为i的值。第二种解决方案是使用objective c运行时并将该值与图像视图关联,第一种是最简单的方法。
NSMutableArray *tempImageArray=[[NSMutableArray alloc]init];
for (int i =0; i<10; i++) {
UIImageView *likeImageImageview = [[UIImageView alloc] initWithFrame:CGRectMake(20,7.5,39.6,39.6)];
UIImage *img0 = [UIImage imageNamed:@"like"];
[likeImageImageview setImage:img0];
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImagesLike:)];
singleTap.numberOfTapsRequired = 1;
[self.view addGestureRecognizer:singleTap];
[row_like addSubview:likeImageImageview];
[tempImageArray addObject:likeImageImageview];
}
self.imageArray=tempImageArray;
[tempImageArray release];
- (void)tapImagesLike:(UITapGestureRecognizer*)recognizer{
UIImageView *imageView = (UIImageView *)[self.imageArray objectAtIndex:0];
imageView.image=[UIImage imageNamed:@"0.png"];
}