как фильтровать новую ячейку сбора?

#ios #swift

Вопрос:

У меня есть ячейка collectionview, и мне нужна ячейка фильтрации.

Я пытаюсь сделать высоту ячейки равной 0. но это не работает.

это мой код.

контроллер представления расширения: UICollectionViewDataSource, UICollectionViewDelegate{

 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return self.numberOfCell
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as? data else {
        return UICollectionViewCell()
    }
            
    let set1 = CoreDataManager.shared.getSetting(idx: indexPath.row).set1
    
    if(set1){
    
    return cell
    }
    else{
        let none = collectionView.dequeueReusableCell(withReuseIdentifier: "none", for: indexPath)
        none.frame.size.width =  100
        none.frame.size.height =  CGSize(width: 0, height: 100).width
        return none

    }
}
 

}

Комментарии:

1. Вы не фильтруете представление коллекции , изменяя размер ячейки .zero , вы фильтруете ячейку, обновляя источник данных, массив, который вы используете, чтобы указать, сколько разделов, сколько строк в разделе, какую модель использовать в cellForItemAt…

2. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы точно указать, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.

Ответ №1:

Если вам нужно установить размер ячейки, вам нужно соответствовать UICollectionViewDelegateFlowLayout, реализовать sizeForItemAt и указать его размер.

 extension viewController: UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: 100, height: 0)}
}
 

еще одно решение, чтобы ограничить высоту для представления внутри вашей ячейки с идентификатором «ячейка» и присвоить ему значение 0, прежде чем возвращать ячейку в cellForItemAt.