Проблема редактирования CollectionView - PullRequest
0 голосов
/ 03 февраля 2020

У меня проблема с представлением моей коллекции. Я пытаюсь реализовать функциональность редактирования, но ячейки, которые не видны в тот момент, когда я нажимаю кнопку «Редактировать», не переходят в «режим редактирования». Вот экран: Cells that weren't on the screen don't transfer into

Я думаю, что проблема заключается в setEdit, в let indexPaths = collectionView.indexPathsForVisibleItems, потому что эти ячейки не являются «видимыми элементами» в данный момент. Но в уроке, который я обнаружил, эта реализация позволяет без проблем редактировать любое количество ячеек. Итак, я немного запутался в этом…

class CollectionViewController: UICollectionViewController, NSFetchedResultsControllerDelegate {


override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionCell", for: indexPath) as! CollectionViewCell
        cell.nameLabel.text = shoes[indexPath.row].name
        cell.shoePhoto.image = UIImage(data: shoes[indexPath.row].photo! as Data)
        return cell
    }

  override func setEditing(_ editing: Bool, animated: Bool) {
           super.setEditing(editing, animated: animated)

           collectionView.allowsMultipleSelection = editing
           let indexPaths = collectionView.indexPathsForVisibleItems
           for indexPath in indexPaths {
               collectionView.deselectItem(at: indexPath, animated: false)
               let cell = collectionView.cellForItem(at: indexPath) as? CollectionViewCell
               cell?.editing = editing
           }
       }
}
class CollectionViewCell: UICollectionViewCell {
    @IBOutlet weak var nameLabel: UILabel!
    @IBOutlet weak var shoePhoto: UIImageView!
    @IBOutlet weak var checkedImageView: UIImageView!

    var editing: Bool = false {
        didSet {
            nameLabel.isHidden = editing
            checkedImageView.isHidden = !editing
        }
    }

    override var isSelected: Bool {
        didSet {
            if editing {
                checkedImageView.image = UIImage(named: isSelected ? "Checked" : "Unchecked")
            }
        }
    }

    override func prepareForReuse() {
        super.prepareForReuse()

        nameLabel.text = ""
        shoePhoto.image = nil
        if editing {
            checkedImageView.image = UIImage(named: isSelected ? "Checked" : "Unchecked")
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...