4

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

任何人都可以帮忙吗?

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
}
4

2 回答 2

1
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
    }
}
于 2017-08-11T10:16:30.930 回答
1

我相信只传递 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)
于 2017-08-11T08:52:48.150 回答