Xcode 我收集视图 我在 cellForRowAtIndexpath 函数中排队 urlsession 数据任务

Xcode I collection view I queue urlsession datatasks within cellForRowAtIndexpath function

这是获取 indexpath.row、url 单元格的 imageView 并执行 urlSession 的代码。但它一次下载所有内容,这并不好。我只想在完成下载之前开始一个新的 url 会话。我怎样才能做到这一点?

    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