【问题标题】:Prevent drawing of a specific UICollectionViewCell防止绘制特定的 UICollectionViewCell
【发布时间】:2014-03-14 12:55:07
【问题描述】:

我需要阻止绘制特定的UICollectionViewCell

我尝试在cellForItemAtIndexPath 方法中设置单元格隐藏或设置alpha=0,但是 不幸的是,它仍然是空白空间,我的目标不是那样。 我也尝试使用委托方法“sizeForItemAtIndexPath”将我的项目的宽度和高度设置为零,但它会干扰对齐。

我需要该项目保留在 CollectionView 数据源上,但在我的 CollectionView 网格中不可见。

可以吗?

谢谢

【问题讨论】:

    标签: objective-c ios7 xcode5 uicollectionview uicollectionviewcell


    【解决方案1】:

    在我看来,如果您尊重 UICollectionView,您可以避免很多错误。

    你应该停止欺骗 UICollectionView。如果它是隐藏的,它不应该在 UICollectionView 上。

    您可以创建一个层来封装您的数据源结构并仅返回您希望在 CollectionView 中显示的内容。想象一下,你有某种过滤器。你可以有这样的东西:

    @property (nonatomic, strong) NSArray* collectionViewData;
    @property (nonatomic, readonly) NSArray* collectionViewDataSource;
    

    然后你覆盖你的 collectionViewDataSource getter:

    - (NSArray*) collectionViewDataSource {
       if(self.filterIsOn) {
           NSMutableArray* filteredData = [self.collectionViewData mutableCopy];
    
           //remove the cells you don't want to show. 
           //I HATE THAT LAST OBJECT
           [filteredData removeLastObject];
           return [filteredData copy];
       } 
    
       return self.collectionViewData;
    }
    

    【讨论】:

    • 谢谢 Tiago,这是个好主意,如果我决定不使用自定义布局来过滤单元格,我会使用你的方法。
    猜你喜欢
    • 2011-09-10
    • 1970-01-01
    • 2016-02-18
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    相关资源
    最近更新 更多