Быстрое заполнение прогресса на каждом клике - PullRequest
0 голосов
/ 06 февраля 2020

Каждая из моих ячеек в tableView имеет свой собственный индикатор прогресса, который заполняется методом cellForRowAt, и он работает нормально.
Моя проблема заключается в том, что когда я выбираю ячейку, индикатор выполнения обновляет заполнение.
У кого-нибудь есть идеи, почему и как это предотвратить? Я думаю, что didSelectRowAt метод не является причиной, потому что этот метод ничего не делает с progressBar.

Метод для заполнения progressBar:

func updateProgressBar(_ cell: TestTableViewCell, level: String) {
    let cellCards = Float64(self.getNumberOfCardsForLevel(level: level))!
    let totalCards = Float64(self.totalCards())!
    delay(0.3) {
        cell.cellProgress.setProgress(Float(cellCards / totalCards), animated: true)
               }
    }

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "TestTableViewCell", for: indexPath) as! TestTableViewCell

    cell.accessoryType = .disclosureIndicator;
    cell.cellProgress.progress = 0

    cell.cellTitle.text = "Test"
    cell.numOfCardsInCell.text = getNumberOfCardsForLevel(level: "1")

    updateProgressBar(cell, level: "1")

        return cell 
    }



func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

        self.tableView.indexPathsForSelectedRows?.forEach { index in
            if(self.cellSelectedImage[indexPath.row] == UIImage(named: "imageTwo") ) {
             tableView.deselectRow(at: indexPath, animated: false)
             self.cellSelectedImage[indexPath.row] = UIImage(named: "imageOne")
            }
            else {
                print("Selected row ->  \(index.row)")
                if self.cellSelectedImage[indexPath.row] == UIImage(named: "imageTwo") {
                 self.cellSelectedImage[indexPath.row] = UIImage(named: "imageOne")
                }
            }
        }

        tableView.reloadRows(at: [indexPath], with: .automatic)
    }
...