创建具有每个单元格进度视图的 UITableViewCell 自定义单元格时出现问题

Problem with create UITableViewCell custom cell with progress view each cell

提问人:Slackman DevDrive 提问时间:11/26/2021 更新时间:11/26/2021 访问量:38

问:

图像 1

向下和向上滚动后。进度条空白 ??

图像 2

  1. 每个单元格的自定义单元格,并通过 urlsession 下载。

    ## custom cell
    class chattingCustomCell: UITableViewCell {
    
    
    
    var downloadCustomTask:URLSessionDownloadTask!
     lazy var progressView : UIProgressView = {
    
     let progress = UIProgressView.init()
     progress.tintColor = .red
     return progress
     }()
    
    
    
     lazy var lbProgressView : UILabel = {
    
     let lb = UILabel.init()
     lb.textAlignment = .center
     return lb
      }()
    
     func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {
     {
             DispatchQueue.main.async{
    
                 if totalBytesExpectedToWrite > 0 {
                     let progress = Float(totalBytesWritten) / Float(totalBytesExpectedToWrite)
    
                     self.progressView.progress = progress
                     self.lbProgressView.text = "\(Float(totalBytesWritten)) / \(Float(totalBytesExpectedToWrite))"
    
                     //            DispatchQueue.main.async {
    
                     self.appDelegate.function.loglog(methodDesc: "\(NSStringFromClass(self.classForCoder))", str: "Video download progress : \(progress) -> \(Float(totalBytesWritten))/ \(Float(totalBytesExpectedToWrite))")
    
                     //                self.Progress.progress=progress
    
                     if(progress == 1)
                     {
    
                         self.appDelegate.function.loglog(methodDesc: "\(NSStringFromClass(self.classForCoder))", str: "Progress : done")
    
    
    
                     }
                     //            }
    
                     //            debugPrint("Progress \(downloadTask) \(progress)")
                 }
             }
         }
    
    }
     .....
    
    
    
      override func setSelected(_ selected: Bool, animated: Bool) {
         super.setSelected(selected, animated: animated)
    
    
     progressView = UIProgressView.init(frame: CGRect(x: (imageFrame.frame.size.width/2)-(150/2), y: (imageFrame.frame.size.height/2), width: 150, height: 10))
                         progressView.backgroundColor = UIColor.red
                         progressView.layer.zPosition = 10
                         progressView.progress = 0
                         self.imageFrame.addSubview(progressView)
                         lbProgressView = UILabel.init(frame: CGRect(x: (imageFrame.frame.size.width/2)-(150/2), y: (imageFrame.frame.size.height/2)+10, width: 150, height: 10))
                         lbProgressView.font = UIFont.systemFont(ofSize: 10)
                         lbProgressView.textAlignment = .center
                         self.imageFrame.addSubview(lbProgressView)
    
    
     }
    
  2. 如果不滚动屏幕,它非常适合下载视频,每个单元格都显示进度状态。

  3. 向下滚动和向上滚动屏幕时。进度视图是空白的,但 URLSession 仍在下载。

如何修复它。 感谢您的提前。

iOS Swift iPhone UITableView nsurlSessionDownloadTask

评论

1赞 Ptit Xav 11/26/2021
当您滚动时,如果下载仍在进行中,则需要从数据视图源调用某个方法来更新进度视图。在单元格中拥有 url 会话可能不是一个好主意:当单元格被重用时会发生什么?
0赞 Slackman DevDrive 11/27/2021
因为我想操作单元以进行下载。我尝试了很多解决方案。这是它的工作。为我前进。谢谢
0赞 Community 11/30/2021
请澄清您的具体问题或提供其他详细信息以准确说明您的需求。正如目前所写的那样,很难确切地说出你在问什么。
0赞 Slackman DevDrive 12/1/2021
当手机首先下载视频时。它显示渐进式工作很好。然后向下和向上滚动 TableView 。单元格重用和渐进式:它是空白的,不会更新。

答: 暂无答案