Проблема выбора ячейки TableView - PullRequest
0 голосов
/ 09 октября 2018

Итак, я выбрал ячейку в табличном представлении.она раскрывается, показывает подробный текст этой ячейки, затем я начал прокручивать ее до тех пор, пока эта выбранная ячейка не исчезнет из поля зрения.из-за повторного использования идентификатора другая ячейка в представлении автоматически получает свойство выбранной ячейки.

Есть ли способ справиться с этим?

var selectedIndex = -1

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    UIView.animate(withDuration: 1) {
        self.labelViewHeightConstraint.constant = 60
        self.labelLeadingConstraint.constant = 136
        self.view.layoutIfNeeded()
    }


    let cell = tableView.cellForRow(at: indexPath) as! CustomCell
    if(selectedIndex == indexPath.row) {
        selectedIndex = -1
            print("deselect")
        UIView.animate(withDuration: 0.4) {

            cell.secondView.isHidden = true
            cell.firstView.backgroundColor =  UIColor(red: 0.8588, green: 0.84705, blue: 0.8745, alpha: 1.0)
        }
    } else {
        cell.secondView.isHidden = false
    }
        self.expandTableView.beginUpdates()
        //self.expandTableView.reloadRows(at: [indexPath], with: UITableViewRowAnimation.automatic )
        self.expandTableView.endUpdates()
    }

И я отменил функцию tableview как

   func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPathaddres  , animated: true)
        if let cell = tableView.cellForRow(at: indexPath) as? customCell {
            cell.firstView.backgroundColor =  UIColor(red: 0.8588, green: 0.84705, blue: 0.8745, alpha: 1.0)
            print("deselected row")
        }
    }

Я уже отключил множественный выбор.

Я прилагаю 2 скриншота.I 1 - выбрать первую ячейку таблицы, затем прокрутить вниз https://drive.google.com/file/d/1RZlya_eVVjDzj02GKV9h0qJU8F29xMin/view?usp=drivesdk, как только эта ячейка выйдет из области видимости.Сервер перехода 3 (как показано на этом снимке экрана) https://drive.google.com/file/d/15k4gLUPkgB6jGZ7AWR6km0Jajst9KKxM/view?usp=drivesdk выбран

1 Ответ

0 голосов
/ 09 октября 2018

Поскольку tableview повторно использует свои ячейки, вам нужно выполнить некоторые дополнительные проверки, если вы хотите, чтобы ваша одна ячейка отличалась от других.

  1. Сбросьте ячейку до значения по умолчанию в методе prepareForReuse.Например, скрыть вид и сбросить направление стрелки в вашем случае.
  2. Проверьте выбранный индекс в методе cellForRow, разверните вид, как в методе didSelectRow, и скройте его, если он не выбран простокак вы делаете в вашем didDeselect методе.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...