2017-08-11 45 views
2

这是我的Swift 3代码。我需要将图像放入通过Kingfisher缓存下载的数组中。实际上,图像现在显示在cell.itemImage中,但我无法将这些图像放到UIImage数组中。如何将图像放置在由Kingfisher缓存下载的阵列中?

任何人都可以帮忙吗?

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
{ 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! ViewItemsCVC 
    let Currency = UserDefaults.standard.string(forKey: "currency") 
    cell.NameLabel.text = self.itemName[indexPath.row] 
    cell.PriceLabel.text = "\(Currency ?? "INR") \(self.itemPrice[indexPath.row])" 
    let resource = ImageResource(downloadURL: URL(string: self.FullLink[indexPath.row])!, cacheKey: self.FullLink[indexPath.row]) 
    cell.itemImage?.kf.setImage(with: resource) 
    return cell 
} 
+0

你想图像添加到UIImage的数组有什么特别的原因吗? – kathayatnk

+0

是的,我需要将图像传递给另一个类通过准备segue –

+0

当用户单击单元格时是否要传递此图像?如果是这种情况,那么你不需要一个数组。 – Ramis

回答

0
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    switch segue.destination { 
    case let viewController as YourViewController: 
     let row = collectionView.indexPathsForSelectedItems?.first?.row 
     let image = ImageResource(downloadURL: URL(string: self.FullLink[row])!, cacheKey: self.FullLink[row]) 
     viewController.image = image 

    default: 
     break 
    } 
} 
0

我相信只传递imageURl会做。你可以这样做下面

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    let currentImageUrl = self.FullLink[indexPath.row] 
    performSegue(withIdentifier: "YOU_SEGUE_IDENTIFIER", sender: currentImageUrl) 
} 


override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "YOUR_SEGUE_IDENTIFIER" { 
     if let desinationController = segue.destination as? UIViewController { 

      if let imageURL = sender as? String { 
       //make imageURL variable in destination controller 
       desinationController.imageURL = imageURL 
      } 
     } 
    } 
} 

//then on next controller you only have to set the imageviews with the url, since kingfisher will cache them, there will be no need to pass whole UIImage, just the link will suffice 

yourcontroller.imageView.kf.setImage(with: imageURL) 
相关问题