изменить цвет представления ячейки при ее выборе.И изменить его обратно, когда выбрана другая ячейка - PullRequest
0 голосов
/ 20 марта 2019

У меня есть ячейка представления коллекции. У каждой ячейки есть представление.В качестве идентификатора теперь по умолчанию я установил цвет границы моего вида на lightGray.Поэтому, когда я выбираю какую-либо ячейку, мне нужно изменить цвет границы моего представления на красный.И снова, если я выберу любую другую новую ячейку.Мой старый вид ячейки должен измениться на lightGray. И новый вид ячейки должен отображаться как redcolor.

. Как мне это сделать:

в моей ячейке:

    @IBOutlet var baseView: UIView! {
            didSet {
                baseView.layer.cornerRadius = 5
                baseView.layer.borderWidth = 1.0
                baseView.layer.borderColor = UIColor.lightGray.cgColor
            }
        }

 let datt = [["duration": "No", "price": "Rs. 100", "perMonth": "per month"],
                         ["duration": "12", "price": "Rs. 55.20", "perMonth": "per month"],
                         ["duration": "No", "price": "Rs. 1300", "perMonth": "one time"]]


     func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "KMSubscriptionsCell", for: indexPath) as! KMSubscriptionsCell
        let subcription = subscriptions[indexPath.item]
        cell.durationLabel.text = datt["duration"]

     return cell
    }

     func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
            let cell = collectionView.cellForItem(at: indexPath) as! KMSubscriptionsCell
    cell.baseView.layer.borderColor = Utils.colorCode.selectedBorderColor.cgColor
                cell.baseView.layer.borderWidth = 2.0


            }

Я попробовал несколько:

в своей ячейке для строки:

  if indexPath.item != indexPath.item {
    cell.baseView.layer.borderWidth = 1.0
    cell.baseView.layer.borderColor = UIColor.lightGray.cgColor
    }

это не работает. Даже если я добавил, выбрал. Не повезло. Пожалуйста, помогите мне.Как я могу достичь этого.

1 Ответ

2 голосов
/ 20 марта 2019

Один простой способ - использовать наблюдателя свойства в классе ячейки:

class CollectionViewCell: UICollectionViewCell {

    override func awakeFromNib() {
        super.awakeFromNib()

        layer.borderWidth = 1
        layer.borderColor = borderColor
    }

    override var isSelected: Bool {
        didSet {
            layer.borderColor = borderColor
        }
    }

    private var borderColor: CGColor {
        return isSelected ? UIColor.red.cgColor : UIColor.lightGray.cgColor
    }

}

Вместо самой ячейки вы также можете применить границу к вашему baseView.

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