Выделите представление содержимого выбранной ячейки swift - PullRequest
0 голосов
/ 04 февраля 2020

Мое требование - выделить contentView выбранной ячейки. На данный момент проблема ранее выбранной ячейки (contentView) также выделяется. Код как ниже

   func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
      let cell = tableView.cellForRow(at: indexPath)
      cell?.viewWithTag(20)?.layer.borderWidth = 2.0
      cell?.viewWithTag(20)?.layer.borderColor = UIColor.blue.cgColor
   }

Ответы [ 3 ]

0 голосов
/ 04 февраля 2020

Выполните следующие 3 шага:

  1. Go для раскадровки и выберите свою ячейку.
  2. На правой панели Инспектора атрибутов измените Selection Style на Default.
  3. Также выберите вид таблицы и в Атрибутах проекта измените Selection на Single Selection
0 голосов
/ 04 февраля 2020

Проблема заключается в повторном использовании ячеек; вам нужно сбросить исходное состояние ячейки, например, так:

class HelightTableViewCell: UITableViewCell {
    override func prepareForReuse() {
        super.prepareForReuse()
        self.layer.borderWidth = 0.0
        self.layer.borderColor = UIColor.clear.cgColor
    }
}

При создании ячейки на prepareForReuse, измените исходное состояние и выберите, установите ли свойства следующим образом:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    guard let cell = tableView.cellForRow(at: indexPath) as? HelightTableViewCell {
        return
    }
    cell.layer.borderWidth = 2.0
    cell.layer.borderColor = UIColor.blue.cgColor
}
0 голосов
/ 04 февраля 2020

Считайте повторное использование ячейки. Вам нужно сбросить слой вашей клетки в prepareForReuse.

...