UICollectionView ReloadData не показывает содержимое должным образом - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь отфильтровать мой homeCollectionView с помощью SegmentControl. При прикосновении к сегменту я фильтрую содержимое на основе тега, доступного в словаре. Когда я выполняю ReloadData и переключаюсь между сегментами, в первом go (когда я касаюсь сегментов в первый раз), фильтр работает, и все данные поступают, но когда я возвращаюсь к сегментам, часть содержимого в ячейке, особенно текст LabelViews не отображаются впоследствии. Кроме того, это происходит для случайного indexPath.

Это мой код:

@objc func toggleHomeContent(_ notification: NSNotification) {
    toggleValContType = notification.object as? String ?? "all"

    if (toggleValContType == "all") {
        mainArrayData = primaryArrayData
    }
    else if (toggleValContType == "collections") {
        mainArrayData = primaryArrayData { $0["filterType"] == "Col" || $0["filterType"] == "CTA" }
    }
    else if (toggleValContType == "books") {
        mainArrayData = primaryArrayData { $0["filterType"] == "Book" || $0["filterType"] == "CTA" }
    }

    homeCollectionView?.reloadData()
    homeCollectionView?.layoutIfNeeded()
    homeCollectionView?.collectionViewLayout.invalidateLayout()
    //DispatchQueue.main.async(execute: homeCollectionView.reloadData)
}

И массивы объявляются так:

var mainArrayData   : [[String:String]] = HomeArray().mainArray
var primaryArrayData: [[String:String]] = HomeArray().mainArray

Вот снимок того, что проблема:

Снимок проблемы

Заранее спасибо!

1 Ответ

0 голосов
/ 22 марта 2020

Добавьте этот код в основной теме:

 homeCollectionView?.reloadData()
homeCollectionView?.layoutIfNeeded()

DispatchQueue.main.async {
 homeCollectionView?.reloadData()
homeCollectionView?.layoutIfNeeded()}
...