gpt4 book ai didi

ios - 无法将图像传递给另一个 View (获得异步后)

转载 作者:可可西里 更新时间:2023-11-01 00:58:05 25 4
gpt4 key购买 nike

我无法将 UIImageViewtableView 传递到 UIViewController。图像显示在 TableView 中,但是当我尝试传递到另一个 View 时,它得到 nil

下载图片的方法是:

 func loadImageFromUrl(url: String, view: UIImageView){

// Create Url from string
let url = NSURL(string: url)!

// Download task:
// - sharedSession = global NSURLCache, NSHTTPCookieStorage and NSURLCredentialStorage objects.
let task = URLSession.shared.dataTask(with: url as URL) { (responseData, responseUrl, error) -> Void in
// if responseData is not null...
if let data = responseData{

// execute in UI thread
DispatchQueue.main.async {
view.image = UIImage(data: data)
}
}
}

// Run task
task.resume()
}

这就是我填充 tableView 的方式:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = Bundle.main.loadNibNamed("UIProductTableViewCell", owner: self, options: nil)?.first as! UIProductTableViewCell
cell.selectionStyle = .none

//Populating data
cell.descriptionLabel.text = catalogOfProducts[indexPath.row].name
cell.priceLabel.text = catalogOfProducts[indexPath.row].regularPrice

if (catalogOfProducts[indexPath.row].productImageURL == "") {
cell.productImageView.image = UIImage(named: "noImage")
}else{
loadImageFromUrl(url: catalogOfProducts[indexPath.row].productImageURL!, view: cell.productImageView)

}
catalogOfProducts[indexPath.row].productImage = cell.productImageView.image
return cell
}

catalogOfProducts[indexPath.row] 是我将 UIImage 传递给相应对象的方式。

要通过 segue 传递数据,我只需传递 Product 对象:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "productDetailSegue", sender: catalogOfProducts[indexPath.row])
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let productDetailViewController = segue.destination as! ProductDetailViewController
productDetailViewController.featuredProduct = (sender as? Product)!
}

最佳答案

要简单地管理下载的图像,您可以使用 SDWebImage 库。

SDWebImage 链接:https://github.com/rs/SDWebImage

这个库很好地管理带有路径的图像。

如何使用 SDWebImage :

cell.productImageView.sd_setImageWithURL(NSURL(string: catalogOfProducts[indexPath.row].productImageURL!), placeholderImage:UIImage(imageNamed:"placeholder.png"))

虽然只需将您的图像 URL 传递给下一个 View ,然后使用相同的代码在下一个 View 中获取图像。

注意:当您调用上面的函数 agin 时,它不会下载图像 agin 并返回下载的图像。

希望这会有所帮助。

关于ios - 无法将图像传递给另一个 View (获得异步后),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40459646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com