我已经在我的swift项目中实现了异步图像加载,以便在表格的单元格中加载一系列图像。
我已经做了以下扩展名
$('body').on('mouseover', '.has-subnav', function() {
$(this).addClass('.active');
});
//and to remove class on mouseout
$('body').on('mouseover', '.has-subnav', function() {
$(this).removeClass('.active');
});
我通过声明一个实例方法来调用该方法
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" ))
当我尝试在扩展程序中将其实现到我的代码中时
self.tableview.reloadData()
我收到错误
'UIImageView'类型的值没有成员'tableview'
我是新手,所以我不太确定如何解决此错误,我确定这很简单
关于如何解决此错误或只是整体解决问题的任何建议?
答案 0 :(得分:1)
通常使用IBOutlet将视图从情节提要板连接到UIViewController。在您的情况下,您可以将故事板中的tableView连接到右舷中拥有UIViewController实例的viewController。
然后,您可以在viewController中调用tableView.reload()
重新加载表。
无法从情节提要板连接到imageView,因此无法将tableView连接到自定义UIImageView类。
在IBOutlets,Storyboards上阅读以供您阅读。