2013-12-18 2 views
0

У меня есть несколько ImageView с метками 1,2,3,4 ...Добавить изображение в UIImageView с тегом

Теперь я хочу, чтобы загрузить изображения на этом Imageviews с их соответствующими тегами.

Для Например: если 6 Imageviews есть то,

for(int i=0;i<6;i++) 
{ 
    imgView = [[UIImageView alloc] initWithFrame:CGRectMake(xpos+10,20, 75, 45)]; 
    xpos+=100; 
    imgView.tag=i; 

    if ([[msg_array objectAtIndex:i] valueForKey:@"Image"]) //Image is cached then assign it 
    { 
     imgView.image=[[msg_array objectAtIndex:i] valueForKey:@"Image"]; 
    } 
    else //Image is not there download it.. 
    { 
     if ([[msg_array objectAtIndex:i] valueForKey:@"Image"] length]!=0) 
     { 
      dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ 
       [self downloadImage_3:[[msg_array objectAtIndex:i] valueForKey:@"Merchant_SmallImage"] AtIndex:i]; 
      }); 
     } 

    } 

} 


//Downloads Images asynchronously.. 
-(void)downloadImage_3:(NSString*)ImageUrl AtIndex:(int)i{ 

    if ([ImageUrl length]!=0) 
    { 
     UIImage *img = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:ImageUrl]]]; 
     NSLog(@"img = %@",img); 
     imgView.image=img; 
    } 

} 

После написания этого, изображение становится скачано (Log показывает некоторые закодированные значения img), но он не получает применять на соответствующей ImageView.

Просьба помочь и заблаговременно.

+0

Вы добавляете свое изображение в качестве подвид представления? –

+0

использовать изображение lazy loading loading images from url – NANNAV

ответ

1

попробовать ниже

//change your download method like 
-(void)downloadImage_3:(NSString*)ImageUrl forImageView :(UIImageView *)imgView 
{ 
    if ([ImageUrl length]!=0) 
    { 
     UIImage *img = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:ImageUrl]]]; 

     dispatch_async(dispatch_get_main_queue(), ^{ 
      [imgView setImage:img]; 
     }); 
    } 
} 

//call your download method like below 

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ 
      [self downloadImage_3:[[msg_array objectAtIndex:i] valueForKey:@"Merchant_SmallImage"] forImageView:imgView]; //pass your ImageView here 
     }); 
+0

i написал '- (void) downloadImage_3: (NSString *) ImageUrl forImageView: (UIImageView *) imgVw { NSLog (@" ImageUrl =% @ ", ImageUrl); if ([ImageUrl length]! = 0) { UIImage * img = [[UIImage alloc] initWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString: Path]]]; if (img) { [dicImages_msg setObject: img forKey: Path]; } imgView.image = [dicImages_msg valueForKey: Path]; } } 'ImageUrl показывает путь по URL-адресу, но неподвижное изображение не применяется – Krunal

+0

Что такое' Path' ?? вы использовали '[Длина пути]'. –

+0

sorry 'Path' означает' ImageUrl' check edits – Krunal

0

Где вы добавляете распределенный вид изображения для родительского вида, предполагается сделать внутри цикл только, каждый раз, чтобы назначить одно изображение на image- вам нужно добавить это изображение в представление родителя, чтобы оно отображалось, пожалуйста, проверьте это.

+0

Если я так делаю, для загрузки изображения требуется много времени, и я не хочу выполнять загрузку основной темы. – Krunal

Смежные вопросы