Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS中通过编程方式将图像设置为imageView by ID_Ios_Imageview - Fatal编程技术网

在iOS中通过编程方式将图像设置为imageView by ID

在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

我正在开发一个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"];
    [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"];  
}