在异步加载中重新加载数据
Reload data in Asynchronous Loading
我已经将异步图像加载到我的 swift 项目中,以在 table 中的单元格中加载一系列图像。
我已使用以下扩展程序完成此操作
extension UIImageView {
public func imageFromServerURL(urlString: String, defaultImage : String?) {
if let di = defaultImage {
self.image = UIImage(named: di)
}
URLSession.shared.dataTask(with: NSURL(string: urlString)! as URL, completionHandler: { (data, response, error) -> Void in
if error != nil {
print(error ?? "error")
return
}
DispatchQueue.main.async(execute: { () -> Void in
let image = UIImage(data: data!)
self.image = image
})
}).resume()
}
}
我通过声明一个实例方法来调用方法
let imageView = UIImageView()
然后 运行 稍后在我的代码中。
cell.posterImageView!.image = UIImage(imageView.imageFromServerURL(urlString: posterImageURL as! String ,defaultImage: "noPosterImage.png" ))
除了图像不会在我的 table 中更新,直到我将图像滚动到视图之外然后将其滚动回视图之前,这大部分都有效。
经过我自己的研究,我发现这个方法似乎对我有帮助
self.tableview.reloadData()
当我试图在我的扩展中像这样将它实现到我的代码中时
DispatchQueue.main.async(execute: { () -> Void in
let image = UIImage(data: data!)
self.image = image
self.tableview.reloadData()
})
我收到错误
Value of type 'UIImageView' has no member 'tableview'
我是 swift 的新手,所以我不太确定如何解决这个错误,我敢肯定这很简单
关于如何解决此错误或简单地解决整个问题的任何建议?
您通常使用 IBOutlets 将故事板中的视图连接到您的 UIViewController。在您的情况下,您可以将情节提要中的 tableView 连接到右舷中拥有 UIViewController 实例的 viewController。
然后你可以在viewController里面调用tableView.reload()
重新加载table.
无法从故事板连接到 imageView,因此您无法将 tableView 连接到您的自定义 UIImageView class。
正在阅读 IBOutlets, Storyboards 供您完成。
我已经将异步图像加载到我的 swift 项目中,以在 table 中的单元格中加载一系列图像。
我已使用以下扩展程序完成此操作
extension UIImageView {
public func imageFromServerURL(urlString: String, defaultImage : String?) {
if let di = defaultImage {
self.image = UIImage(named: di)
}
URLSession.shared.dataTask(with: NSURL(string: urlString)! as URL, completionHandler: { (data, response, error) -> Void in
if error != nil {
print(error ?? "error")
return
}
DispatchQueue.main.async(execute: { () -> Void in
let image = UIImage(data: data!)
self.image = image
})
}).resume()
}
}
我通过声明一个实例方法来调用方法
let imageView = UIImageView()
然后 运行 稍后在我的代码中。
cell.posterImageView!.image = UIImage(imageView.imageFromServerURL(urlString: posterImageURL as! String ,defaultImage: "noPosterImage.png" ))
除了图像不会在我的 table 中更新,直到我将图像滚动到视图之外然后将其滚动回视图之前,这大部分都有效。
经过我自己的研究,我发现这个方法似乎对我有帮助
self.tableview.reloadData()
当我试图在我的扩展中像这样将它实现到我的代码中时
DispatchQueue.main.async(execute: { () -> Void in
let image = UIImage(data: data!)
self.image = image
self.tableview.reloadData()
})
我收到错误
Value of type 'UIImageView' has no member 'tableview'
我是 swift 的新手,所以我不太确定如何解决这个错误,我敢肯定这很简单
关于如何解决此错误或简单地解决整个问题的任何建议?
您通常使用 IBOutlets 将故事板中的视图连接到您的 UIViewController。在您的情况下,您可以将情节提要中的 tableView 连接到右舷中拥有 UIViewController 实例的 viewController。
然后你可以在viewController里面调用tableView.reload()
重新加载table.
无法从故事板连接到 imageView,因此您无法将 tableView 连接到您的自定义 UIImageView class。
正在阅读 IBOutlets, Storyboards 供您完成。