Невозможно удалить отдельную ячейку из представления коллекции - PullRequest
0 голосов
/ 18 февраля 2020

Я столкнулся с очень тревожной проблемой, из-за которой я не могу удалить из очереди только одну ячейку в collectionView. Когда в collectionView имеется более одного элемента, он работает нормально, но как только у меня появляется массив с одним элементом, он не отображает никаких ячеек. Я не могу понять, что не так с моим кодом.

extension collectionview: UICollectionViewDelegate, UICollectionViewDataSource {
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 1
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! UICollectionViewCell
        return cell
    }       
}

Ответы [ 3 ]

0 голосов
/ 19 февраля 2020

Первое:
Возвращенное значение numberOfItemsInSection будет array.count для Примера

var array = [model]()

Затем в cellForItemAt вы должны сконфигурировать свою ячейку с данными, поэтому добавьте этот блок в свой класс ячеек.

func configureCell(_ data: model) { 
   // code for cell view 
}

Наконец cellForItemAt будет

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! UICollectionViewCell
    cell.configureCell(array[indexPath.item])
    return cell
}

Надеюсь, это будет полезно для вас.

0 голосов
/ 19 февраля 2020

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

Но вот несколько замечаний / предложений:

  1. Добавьте точку останова или оператор журнала отладки в numberOfItemsInSection и убедитесь, что он вызывается. Если нет, то, скорее всего, у вас возникла одна из множества возможных проблем:

    • Убедитесь, что вы установили «источник данных» для представления сбора (в IB или программно). Простого соответствия UICollectionViewDataSource недостаточно: вам действительно нужно установить источник данных представления сбора.

    • Убедитесь, что вы установили базовый класс для вашей сцены раскадровки, чтобы она была представлением рассматриваемый контроллер.

    • Убедитесь, что вы поместили эти UICollectionViewDataSource методы в нужный объект.

  2. Я заметил что вы поместили эти методы как расширение collectionview.

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

    • Обычно методы UICollectionViewDataSource вставляются в контроллер представления (или, реже, выделенный объект, который вы продадите и на который сохраните свою сильную ссылку). Я не уверен, что делать с вашим классом с именем collectionview.

Но, короче говоря, нет проблем с представлениями коллекции только с одной ячейкой , Ваша проблема лежит в другом месте.

0 голосов
/ 18 февраля 2020

Число, возвращаемое для numberOfItemsInSection, должно быть общим количеством объектов, которые вы хотите показать, поэтому, если у вас есть массив объектов, например, вы захотите вернуть счетчик этого массива. Поскольку в настоящее время он установлен на один, будет показан только один элемент. Если вы измените его так, чтобы оно соответствовало количеству отображаемых элементов, то collectionView должен взаимодействовать.

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