2017-10-05 12 views
0

cellForRowAtのメソッドの中に、画像を取得してセルのimageViewに読み込むコードがあります。イメージは印刷ステートメントからダウンロードされていることが確認されていますが、イメージはセルに表示されていません。私を助けてください。UITableViewCell内のURLからUIImageViewの画像を設定するにはどうすればいいですか?

let request = URLRequest(url: URL(string: imageURL)!) 

     let session = URLSession.shared 
     let dataTask = session.dataTask(with: request as URLRequest) {(data, response, error) in 
      // The download has finished. 
      if let e = error { 
       print("Error downloading picture: \(e)") 
      } else { 
       // No errors found. 
       // It would be weird if we didn't have a response, so check for that too. 
       if let res = response as? HTTPURLResponse { 
        print("Downloaded image with response code \(res.statusCode)") 
        if let imageData = data { 
         // Finally convert that Data into an image and do what you wish with it. 
         let image = UIImage(data: imageData) 
         // Do something with your image. 

         DispatchQueue.main.async { 
          cell.imgView.contentMode = .scaleAspectFit 
          cell.imgView.image = image 
         } 

         print("image received") 
        } else { print("Couldn't get image: Image is nil") } 
       } else { print("Couldn't get response code for some reason") } 
      } 
     } 
     dataTask.resume() 
+0

イメージを設定するときに 'cell.imgView'が' nil'でないかどうか確認しましたか? –

+0

@SalmanGhumsani AlamoFireの代わりにAppleが提供するネイティブライブラリを使用したいと思います。お返事ありがとうございます。 –

+0

あなたは 'cell'の値が何であるかを見るためにデバッグを進めましたか?と 'cell.imgView'?彼らは有効ですか? – DonMag

答えて

0

イメージを表示するためにセルのサブビュー(imageView)のリロードが不足していると思います。おそらく、正しいセルを追跡したいと思うかもしれません。

cell.tag = indexPath.row //after you init the cell 

DispatchQueue.main.async { 
    if cell.tag == indexPath.row 
    cell.imgView.contentMode = .scaleAspectFit 
    cell.imgView.image = image 
    cell.setNeedsLayout() 
} 
関連する問題