Не удалось перезагрузить UICollectionView при нажатии кнопки - PullRequest
0 голосов
/ 08 апреля 2019

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

Так вот мой код:

@IBAction func cateSelTap(_ sender: Any) {

     isChecked = !isChecked
     if isChecked {
        self.subsetTheCategoryListForClientLogin(isCityLogin: false)
     }else {
        self.subsetTheCategoryListForClientLogin(isCityLogin: true)
     }
}

    func subsetTheCategoryListForClientLogin(isCityLogin: Bool) {
        let cityType = "city"
        print("LOG:CATE1 \(self.categoryarr)")
        var objectIds = [Int]()
        var subsetArray = NSMutableArray()
        for i in 0..<self.categoryarr.count {
            let type = (self.categoryarr.object(at:i) as AnyObject).value(forKey: "type") as! String
            if isCityLogin {
                if type == cityType {
                    subsetArray.add(self.categoryarr.object(at:i) as AnyObject)
                    objectIds.append(i)
                }
            } else {
                if type != cityType {
                    subsetArray.add(self.categoryarr.object(at:i) as AnyObject)
                    objectIds.append(i)
                }
            }
        }
        self.categoryarr.removeAllObjects()
        self.categoryarr = subsetArray
        print("LOG:CATE2 \(self.categoryarr)")
        DispatchQueue.main.async{
            self.categorycollection.reloadData()
//            self.categorycollection.performSelector(onMainThread: #selector(self.categorycollection.reloadData), with: nil, waitUntilDone: true)

        }
    }

Когда я запускаю свое приложение и когда я выключаю - мои данные представления коллекции не показывают точные данные .. все же это показывает предыдущие данные. Снова, когда я выключаю его полностью пустым.

Любая помощь в этом?

Ответы [ 2 ]

0 голосов
/ 08 апреля 2019

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

func subsetTheCategoryListForClientLogin(isCityLogin: Bool) {

    let cityType = "city"
    print("LOG:CATE1 \(self.categoryarr)")
    var objectIds = [Int]()
    var subsetArray = NSMutableArray()
    for i in 0..<self.categoryarr.count {
        let type = (self.categoryarr.object(at:i) as AnyObject).value(forKey: "type") as! String
        if isCityLogin {
            if type == cityType {
                subsetArray.add(self.categoryarr.object(at:i) as AnyObject)
                objectIds.append(i)
            }
        } else {
            if type != cityType {
                subsetArray.add(self.categoryarr.object(at:i) as AnyObject)
                objectIds.append(i)
            }
        }
    }
    //note this line
    self.categoryCollectionViewSource.removeAllObjects()
    self.categoryCollectionViewSource = subsetArray
    print("LOG:CATE2 \(self.categoryarr)")
    DispatchQueue.main.async{
        self.categorycollection.reloadData()
    }
}
0 голосов
/ 08 апреля 2019
@IBAction func cateSelTap(_ sender: Any) {
      isChecked = !isChecked
   if isChecked {
         self.subsetTheCategoryListForClientLogin(isCityLogin: false)
   } else {
         self.subsetTheCategoryListForClientLogin(isCityLogin: true)
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...