#ios #swift #iphone #uitableview #nsurlsessiondownloadtask
Вопрос:
Изображение 1
После прокрутки вниз и вверх. индикатор выполнения пуст ??
Изображение 2
- Пользовательская ячейка для каждой ячейки и загрузка через сеанс URL.
## 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 gt; 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) -gt; (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) }
- если не прокручивать экран, он идеально подходит для загрузки видео в каждую ячейку со статусом прогресса отображения.
- при прокрутке вниз и прокрутке экрана вверх. просмотр хода выполнения он пуст, но urlsession все еще загружается.
как это исправить. Спасибо вам за заранее.
Комментарии:
1. При прокрутке , если загрузка все еще продолжается, вам необходимо обновить представление хода выполнения, вызвав какой-либо метод из источника представления данных. Наличие сеанса URL-адреса в ячейке может быть не очень хорошей идеей : что происходит, когда ячейка используется повторно?
2. потому что я хочу использовать ячейку для загрузки с прогрессом. Я пробую много решений. это ее работа. аванс для меня. благодарить
3. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы выделить именно то, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.
4. когда ячейка загружает видео первой. его шоу прогрессивно работает нормально. и после прокрутки вниз и вверх tableview . повторное использование ячеек и постепенное их заполнение и не обновление.