选择时更改单元格视图的颜色。并在选择另一个单元格时将其改回

时间:2019-03-20 09:32:50

标签: ios swift uicollectionview

我有一个收集视图单元格。我每个单元格都有一个视图。现在默认为id,我将视图的边框颜色设置为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 个答案:

答案 0 :(得分:2)

一种简单的方法是在单元格类中使用属​​性观察器:

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