Я пытаюсь загрузить 3 изображения, используя приведенный ниже метод. Проблема в том, что я не получаю никаких ошибок из моего блока завершения, и все 3 изображения отображаются только после закрытия моего детального контрольного монитора и его повторного открытия.SDWebImage Не отображается после загрузки (только после повторного открытия VController)
Что мне не хватает? Спасибо за любую помощь, очень благодарен.
- (UIImage*)loadImageFav1:(NSString *)nameEmail
{
UIImageView *img =[[UIImageView alloc]init];
// NSString *strBack = [NSString stringWithFormat:@"%@%@%@", self.urlPrefix,[self.selectedProfile objectForKey:nameEmailPro],@"_B.png"];
NSString *strProfi = [NSString stringWithFormat:@"%@%@%@", self.urlPrefix,nameEmail,@"_fav1.png"];
//
// NSURL *bkgUrl = [NSURL URLWithString:[strBack stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSURL *f1Url = [NSURL URLWithString:[strProfi stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
// // set imges below
NSLog(@"selected fprofile ......str data...%@",strProfi);
////////strt
weakImageViewF1= self.friendImageView1;
[img sd_setImageWithURL:f1Url
placeholderImage:[UIImage imageNamed:@"profile-1.jpg"]
options:SDWebImageRetryFailed
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
NSLog(@"error...back..log %@", error);
if (image) {
// Update model to say that the image was downloaded
NSLog(@"Complete...Background...SSSSSS");
weakImageViewF1.image = image;
[weakImageViewF1 setNeedsLayout];
}
}];
//////
// Test simple call
// [img sd_setImageWithURL:f1Url placeholderImage:[UIImage imageNamed:@"profile-1.jpg"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
// if(error){
// NSLog(@"Callback Error:%@",error);
// }
// if(image){
// NSLog(@"Callback Image:%@",image);
// }
// }];
return img.image;
}
вызова все 3 изображения в ViewDidAppear
if ([self loadImageFav1:self.emailID] != nil) {
// call the same method on a background thread
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
UIImage *tmpF1 = [self loadImageFav1:self.emailID];
UIImage *tmpF2 = [self loadImageFav2:self.emailID];
UIImage *tmpF3 = [self loadImageFav3:self.emailID];
// update UI on the main thread
dispatch_async(dispatch_get_main_queue(), ^{
self.friendImageView1.image = tmpF1;
self.friendImageView2.image = tmpF2;
self.friendImageView3.image = tmpF3;
});
});
}
///// GOT IT работает, но ПОЛЮБИЛИ экспликации - БЛАГОДАРЯ
Так, чтобы это заработало я сначала установите sdWebImageWithURL в мой оригинальный ImageView и остановитесь с помощью temp UIImageView * img = [[UIimageVew alloc] init];
Я пошел от:
[img sd_setImageWithURL:f1Url placeholderImage:[UIIm...
To:
[self.friendImageView1 sd_setImageWithURL:f1Url placeholderImage:[UIIm...
Спасибо за помощь.Я извлек фоновый поток, так что теперь мой viewDidAppear выглядит так: self.friendImageView1.image = [self loadImageFav1: self.emailID]; self.friendImageView2.image = [self loadImageFav2: self.emailID]; self.friendImageView3.image = [self loadImageFav3: self.emailID]; .... Нет Luck Я получаю только изображение заполнителя, пока не перезагружу VC. – AhabLives
@AhabLives видит обновление моего ответа. –
Большое спасибо @Mike за объяснение. Я ненавижу не понимать, почему что-то работает больше всего на свете. – AhabLives