2016-05-30 8 views
2

私はUICollectionViewを使用しています。SDWebImageがダウンロードされていますが、画像はありません

イメージはFTPサーバーから送信されます。ここ は、ボタン上の画像をダウンロードして、表示のために私のコードです:

[tempp sd_setImageWithURL:[NSURL URLWithString:[[arrFilterData objectAtIndex:indexPath.row] valueForKey:@"ZoomPrdImg"]] //PrdImg //ZoomPrdImg 
      placeholderImage:nil 
        completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { 
         if (image) { 
          myCell.image.userInteractionEnabled = YES; 
          dispatch_async(dispatch_get_main_queue(), ^{ 
           [myCell.image setImage:image forState:UIControlStateNormal]; 
           [myCell setNeedsLayout]; 
          }); 
         } 
        }]; 

myCell.imageは、ダウンロードした画像を設定し、私のボタンです。 今、私はその画像が正常にダウンロードされたのではなく、ナットをボタンに表示します。 UICollectionViewに3000以上の画像がありますが、画像と空白があります。

これはどのように可能ですか?これを解決するには?そこに問題がありますか?

EDIT: temppあなたはであなたのイメージを取得しているので、あなたの完了ハンドラ内

[myCell.image setImage:image forState:UIControlStateNormal]; 
          [myCell setNeedsLayout]; 

[myCell.image setImage:tempp.image forState:UIControlStateNormal]; 
          [myCell setNeedsLayout]; 

置き換えるviewDidLoad

- (void)viewDidLoad { 
    tempp = [[UIImageView alloc] init]; 
} 
+0

この行のtempp.imageについて説明できます[myCell.image setImage:tempp.image forState:UIControlStateNormal]; –

+1

私はmyCell.imageで私が言及したように私はそれにダウンロードしたイメージを設定する私のボタンです。 –

+0

ボタンに –

答えて

0

にalloctedされますオブジェクト

+0

私はこれを既に試しましたが、それは同じ問題です。 –

+0

その完了ハンドラから 'error'をチェックしてください。あなたは画像を取得していないので、私は – Lion

+0

いいえそこにエラーはないと思うそれは正常にダウンロードしました。 –

0

私はあなたの可変temppが破壊され、イメージの要求をキャンセルすると思います。 要求コードを

に変更してください。
[myButton sd_setImageWithURL:[NSURL URLWithString:@"MyURL"] forState:UIControlStateNormal completed:yourCompletitionBlock]; 

すべては問題ありません。

UPDは tempp変数についてのあなたの答えに基づいて

、私はあなたが多くの細胞のためのsd_setImage ...を呼び出すとき、唯一の最後のリクエストがロードされるので、あなたは、ページごとに1枚の画像を参照してくださいと思います。リクエストは非同期で、新しいイメージをリクエストすると古いリクエストはキャンセルされます。 SDWebImageから

コード:

- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletionBlock)completedBlock { 
    [self sd_cancelCurrentImageLoad]; 
    objc_setAssociatedObject(self, &imageURLKey, url, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 

最初の行は、古い要求をキャンセルします。

+0

sd_setImageWithURLは動作しますが、しばらくするとクラッシュしますが、例外は次のとおりです。CoreFoundation'CFGetTypeID:--------これを取り除く方法。 ? –

+0

あなたはこのメソッドを使って正しくないと思います。新しいコードを表示できますか?どのコードですか? –

+0

?と私はFTPサーバーからイメージを取得するので、それは任意の問題を抱えている? –

関連する問題