这是在indexpath.row,URL中获取单元格的imageView并执行urlSession的代码。但是它会立即下载所有内容,这并不好。我只想在完成下载之前启动一个新的urlsession。我该怎么做?

    let image = cell.viewWithTag(10) as! UIImageView
    let url = URL(string: categories[indexPath.row].imageURL)
    URLSession.shared.dataTask(with: url!) { (data, response, error) in
        if error != nil {
            print(error!)
        }
        DispatchQueue.main.async {
            UIView.transition(with: image, duration: 0.1, options: .transitionCrossDissolve, animations: {
                image.image = UIImage(data: data!)
            }, completion: nil)
        }
        }
        .resume()

最佳答案

在要显示单元格时会调用cellForRowAtIndexpath,因此在您当前的代码中,它将在单元格的每个外观上下载图像,您需要使用SDWebImage来利用包括自动缓存在内的许多功能

另外,最好为单元内的元素而不是标签创建出口

let image = cell.viewWithTag(10) as! UIImageView

关于swift - Xcode我收集 View 我在cellForRowAtIndexpath函数内将urlsession数据任务排队,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55025153/

10-11 19:50