我想知道是否有任何方法可以在下载项目时继续重新加载tableView。
有与这些图像相关的图像和信息。当用户首次打开应用程序时,应用程序开始使用HTTP下载图像和数据。用户只有在他/她继续离开viewController并返回时才能看到tableView中下载的项目。
我尝试过这样的事情:
while downloading {
tableView.reloadData()
}
但是,这会占用太多内存并导致应用程序崩溃。
如何将tableView与图像和数据一起异步填充,同时仍然保留在tableViewController中?
P.S。如果您对我正在使用的库或API感兴趣,我使用Alamofire下载和Realm进行数据持久化。
答案 0 :(得分:-1)
正确和通常的方法是将数据重新加载到表中,而不是委托单个单元格从链接中异步加载图像。
在swift中,你可以扩展UIImage
extension UIImageView {
func imageFromUrl(urlString: String) {
if let url = NSURL(string: urlString) {
let request = NSURLRequest(URL: url)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {
(response: NSURLResponse?, data: NSData?, error: NSError?) -> Void in
if let imageData = data as NSData? {
self.image = UIImage(data: imageData)
}
}
}
}
}
在你的CellForRowAtIndexPath中使用类似的东西从链接加载图像
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
...
cell.image.imageFromUrl(dataArray[indexPath.row].imageUrl)
return cell
}