UITableViewCell Выбранный цвет фона на DidSelectRow - PullRequest
0 голосов
/ 22 июня 2019

Я хочу изменить фон при выборе таблицы. Прямо сейчас, когда я выбираю две таблицы, фон меняется на 2. Я просто хочу изменить фон последней выбранной таблицы. Так что просто меняйте фон одной таблицы, а не двух. Измените фон последней картины, которую я выбрал.

 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
     if tableView == self.tableView1 {
        let cell:DeviceTableViewCell2 = tableView1.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! DeviceTableViewCell2
  cell.selectionStyle = .none

            cell.backgroundColor = GradientColor(UIGradientStyle.diagonal, frame: self.view.frame, colors: [UIColor.flatPowderBlueDark, UIColor.flatSand])

        }
        if tableView == self.tableView2 {
            let cell:DeviceTableViewCell2 = tableView2.dequeueReusableCell(withIdentifier: cellIdNew, for: indexPath) as! DeviceTableViewCell2
 cell.selectionStyle = .none

                cell.backgroundColor = GradientColor(UIGradientStyle.diagonal, frame: self.view.frame, colors: [UIColor.flatPowderBlueDark, UIColor.flatSand])

            }
  if tableView == self.tableView3 {
                let cell:DeviceTableViewCell2 = tableView3.dequeueReusableCell(withIdentifier: cellIdNew2, for: indexPath) as! DeviceTableViewCell2
cell.selectionStyle = .none


                cell.backgroundColor = GradientColor(UIGradientStyle.diagonal, frame: self.view.frame, colors: [UIColor.flatPowderBlueDark, UIColor.flatSand])
}

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

        if tableView == self.tableView1 {
let selectedCell:UITableViewCell = tableView1.cellForRow(at: indexPath)!
                    selectedCell.contentView.backgroundColor = UIColor.flatGray
}
 if tableView == self.tableView2 {
 let selectedCell2:UITableViewCell = tableView2.cellForRow(at: indexPath)!
                        selectedCell2.contentView.backgroundColor = UIColor.flatGray
                    }
if tableView == self.tableView3 {
 let selectedCell3:UITableViewCell = tableView3.cellForRow(at: indexPath)!
                        selectedCell3.contentView.backgroundColor = UIColor.flatGray
}

1 Ответ

1 голос
/ 22 июня 2019

Не изменяйте backgroundColor contentView или самой ячейки, вместо этого используйте selectedBackgroundView:

 cell.backgroundView = UIView()
 cell.backgroundView?.backgroundColor = // your color when not selected

 cell.selectedBackgroundView = UIView()
 cell.selectedBackgroundView?.backgroundColor = // your color when selected

После этой начальной настройки не нужно ничего менять. Все будет работать автоматически.

Не устанавливайте cell.selectionStyle = .none, потому что это полностью отключит выбор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...