2016-10-05 65 views
0

我试图找出一种方法来将图像通过桌面视图上的SDWebImage加载到可在全屏中查看图像的视图(DetailView)。如何将SDWebImage图像推送到详细视图

我有正确显示在表格视图上的URL加载的图像。但是当我点击一个,它会继续到另一个视图(DetailView),当我有一个UIImage时,它是空白的。出于某种原因,图像未加载。

谢谢!

这里是TableView中代码:

import UIKit 

class TableViewController: UITableViewController { 

var imageURLs = [String]() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    imageURLs = ["https://i.imgur.com/lssFB4s.jpg","https://i.imgur.com/bSfVe7l.jpg","https://i.imgur.com/vRhhNFj.jpg"] 


    // Uncomment the following line to preserve selection between presentations 
    // self.clearsSelectionOnViewWillAppear = false 

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
    // self.navigationItem.rightBarButtonItem = self.editButtonItem() 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 

} 

override func prepare(for segue: UIStoryboardSegue, sender: AnyObject?) { 

    if (segue.identifier == "DetailView") { 

     let VC = segue.destinationViewController as! DetailViewController 
     if let indexpath = self.tableView.indexPathForSelectedRow { 

      let Imageview = imageURLs[indexpath.row] as String 
      VC.SentData1 = Imageview 
     } 

    } 



} 

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") 

    let cell2: TableViewCell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! TableViewCell 

    let imagename = UIImage(named: imageURLs[indexPath.row]) 
    cell2.cellImage.image = imagename 


    let imageView = cell?.viewWithTag(1) as! UIImageView 

    imageView.sd_setImage(with: URL(string: imageURLs[indexPath.row])) 

    return cell! 


} 

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return imageURLs.count 
} 

这里是的DetailView代码:

import UIKit 

class DetailViewController: UIViewController { 

@IBOutlet weak var Detailimageview: UIImageView! 

var SentData1:String! 


override func viewDidLoad() { 
    super.viewDidLoad() 


    Detailimageview.image = UIImage(named: SentData1) 


    // Do any additional setup after loading the view. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 


/* 
// MARK: - Navigation 

// In a storyboard-based application, you will often want to do a little preparation before navigation 
override func prepare(for segue: UIStoryboardSegue, sender: AnyObject?) { 
    // Get the new view controller using segue.destinationViewController. 
    // Pass the selected object to the new view controller. 
} 
*/ 

回答

1

您正在使用UIImage(named:)在您的目的地VC。这将尝试从您的包中加载图像,而不是从网络加载。您应该使用sd_setImage从网络获取它(或者通过高速缓存,如果它已经被取出):

Detailimageview.sd_setImage(with: URL(string:self.SentData1)) 

注意,属性和变量应当按照约定

+0

感谢您的答复加载它,你正在做同样的方式在你的tableview细胞。我得到一个错误,说:'UIImage'类型的值?'没有成员“sd_setImage” 需要明确的是,我将其粘贴过来:Detailimageview.image =的UIImage(命名为:SentData1) 这是否意味着错误已经SDWebImage没有被“装”到DetailViewController? 谢谢! – Miles

+0

对不起,这是一个错字。固定 – Paulw11

+0

它很好用!非常感谢你,感谢你! – Miles

0

以小写字母开头当加载您的详细信息视图,您传递的是要加载的图像的网址,但尝试从包含UIImage(named: SentData1)的包中加载它。

相反,你应该只通过执行类似Detailimageview.sd_setImage(with: URL(string: SentData1))

+0

感谢您的回复。我得到一个错误,说:'UIImage'类型的值?'没有成员'sd_setImage'要清楚,我粘贴它:Detailimageview.image = UIImage(名为:SentData1)这是否意味着SDWebImage尚未“加载”到DetailViewController上?谢谢! – Miles

+0

我不明白你会如何得到我给你的代码的错误。你确定你没有做别的事吗? – Dima

+0

Paulw11回答下面的代码略有不同:Detailimageview.sd_setImage(with:URL(string:self.SentData1))这一个似乎工作。我感谢帮助! – Miles

相关问题