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 的图像