Как редактировать изображение внутри ячейки на основе значений, связанных с ячейкой - Xcode - Swift 5.0 - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь добавить рамку вокруг изображения ячейки, когда выбран определенный продукт. Представление коллекции имеет панель поиска, которая перезагружает представление коллекции на основе поисковых слов. Поэтому, если изображение загружается снова, я хочу, чтобы граница все еще присутствовала. Вся функция поиска и добавления границы работает, однако, когда я добавляю границу в одну ячейку, она появляется и в другой ячейке (я проверил, чтобы идентификаторы были разными, и они есть).

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

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

Кто-нибудь может пролить свет на мою проблему? Буду очень признателен!

Спасибо!

Вот код:

      var selectedProducts = [String]() /// contains id's of products which are selected



      override func viewDidLoad() {
      super.viewDidLoad()
        collectionView?.register(boxPostCell.self, forCellWithReuseIdentifier: boxPostCell.cellId)
        collectionView?.backgroundView?.alpha = 0
        collectionView?.backgroundColor = UIColor.white
        collectionView?.register(boxswipeCell.self, forCellWithReuseIdentifier: swipeCellId)
        collectionView.keyboardDismissMode = .onDrag
        collectionView?.reloadData()
        }



    override func numberOfSections(in collectionView: UICollectionView) -> Int {
            return 2
        }


    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        if section == 1{
            return products.count
        }
        return 1
        }


    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
            let section = indexPath.section
            if section == 1{
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: boxPostCell.cellId, for: indexPath) as! boxPostCell
            if indexPath.item < products.count {
                cell.product = products[indexPath.item]

                // products[indexPath.item].id is the id of product in cell

                if selectedProducts.contains(products[indexPath.item].id){
                    UIView.animate(withDuration: 0.5){
                    cell.photoImageView.transform = .init(scaleX: 0.98, y: 0.98)
                    cell.contentView.backgroundColor = UIColor(red:169/255, green:0/255, blue:21/255, alpha:1.0)
                    }
                }else{
                    UIView.animate(withDuration: 0.5) {
                    if let cell = collectionView.cellForItem(at: indexPath) as? boxPostCell {
                            cell.photoImageView.transform = .identity
                            cell.contentView.backgroundColor = .clear
                        }
                    }
                }
            }
            cell.delegate = self
            return cell
            }
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: swipeCellId, for: indexPath) as! boxswipeCell
            cell.delegate = self 
            return cell
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...