UITableView 不显示来自 URL 的图像 [重复]

Posted

技术标签:

【中文标题】UITableView 不显示来自 URL 的图像 [重复]【英文标题】:UITableView not showing images from URLs [duplicate] 【发布时间】:2017-05-02 13:13:12 【问题描述】:

我有这段代码应该显示来自 URLS 的图像。我认为一切都很好,因为当我打印图像数量和images 时,我得到了一个包含 7 个图像的数组。

请查看我的代码并纠正我做错的地方。

 import UIKit
 import SwiftyJSON
 import Haneke

 class  SlideViewController: UIViewController , UITableViewDelegate ,        UITableViewDataSource 

@IBOutlet weak var tableview : UITableView!

 var images = [String]()
    override func viewDidLoad() 
    super.viewDidLoad()

    tableview.delegate = self
    tableview.dataSource = self
    getJSON()




func numberOfSections(in tableView: UITableView) -> Int 
    return 0



func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
     return images.count




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

    let cell = tableView.dequeueReusableCell(withIdentifier: "imageCell", for: indexPath) as! ImageTableViewCell

    let remote = images[indexPath.row]

    let imageurl = URL(string: remote)
    cell.images.sd_setImage(with: imageurl)


    return cell


func getJSON() 

    let url =  "http://localhost:8000/api/hello"
    let myuel = URL(string: url)
    let resquest = NSMutableURLRequest(url: myuel!)

    resquest.httpMethod = "GET"


    let task = URLSession.shared.dataTask(with: resquest as URLRequest, completionHandler:  data,response,error in
        if error != nil
            print(error!.localizedDescription)
            return
        

        let json = JSON(data)

        self.images = json["pic"].arrayObject! as! [String]
        print(self.images.count)
        print(self.images)


        DispatchQueue.main.async 
            self.tableview.reloadData()
        

    )
    task.resume()
     


  

【问题讨论】:

最好使用 SDWebimage 它需要 url 并显示图像。 确保图像 url 不是来自本地主机,因为您使用本地主机进行 api 调用。 在下一个视图中,我正在使用来自本地主机的图像并且它正在工作! @BhupatBheda 检查更新的答案。它不工作 请检查您的图片网址 【参考方案1】:

确保从以下方法返回一个部分,并且

func numberOfSections(in tableView: UITableView) -> Int 
    return 1

使用此扩展从 url 异步加载和查看图像

extension UIImageView 
    public func imageFromServerURL(urlString: String) 

        URLSession.shared.dataTask(with: NSURL(string: urlString)! as URL, completionHandler:  (data, response, error) -> Void in

            if error != nil 
                print(error)
                return
            
            DispatchQueue.main.async(execute:  () -> Void in
                let image = UIImage(data: data!)
                self.image = image
            )

        ).resume()
    

使用上述扩展将图像加载到 imageView 像这样。

cell.imageview.imageFromServerURL(urlString: urlString)

【讨论】:

以上是关于UITableView 不显示来自 URL 的图像 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

iOS 在 UITableView 中显示来自 ALAsset 的图像

来自 S3 的 URL 图像不显示图像

Viber 不显示来自 URL 的图像

从 Json Array 在 UITableView 上显示图像

如何在互联网上显示来自 json url 的图像

来自 url 的 UIImage 需要很长时间才能快速加载