Ios 将数据传递到UICollectionReusableView

Ios 将数据传递到UICollectionReusableView,ios,objective-c,uicollectionview,Ios,Objective C,Uicollectionview,我正在使用自定义UICollectionViewFlowLayout,并且我已经为此布局注册了自定义的可重用类 [self registerClass:[noContentDecoration class] forDecorationViewOfKind:knoContentsDecorationKind]; 现在,我想在初始化阶段向这个装饰视图传递一些数据,我想在这个可重用类中设置一些属性 但我无法访问此视图,我只找到UICollectionView的此委托方法: - (void)coll

我正在使用自定义UICollectionViewFlowLayout,并且我已经为此布局注册了自定义的可重用类

 [self registerClass:[noContentDecoration class] forDecorationViewOfKind:knoContentsDecorationKind];
现在,我想在初始化阶段向这个装饰视图传递一些数据,我想在这个可重用类中设置一些属性

但我无法访问此视图,我只找到UICollectionView的此委托方法:

- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingSupplementaryView:(UICollectionReusableView *)view forElementOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath
但这里的问题是:此方法仅在文档中提到的删除可重用视图时调用:

使用此方法可以检测何时从集合视图中删除补充视图,而不是监视视图本身以查看它何时出现或消失

如何在初始化过程中将数据传递给这个可重用视图


谢谢

您正在使用装饰视图。向它传递数据是复杂的

  • 创建
    UICollectionViewLayoutAttribute的自定义子类来保存数据
  • UICollectionViewLayout
    子类中,重写
    LayoutAttributeClass
    以返回自定义属性类
  • 另外,在
    UICollectionViewLayout
    子类中,在
    LayoutAttributesForElementsRect:
    layoutAttributesForDecorationViewOfKind:atIndexPath:
    中正确设置装饰视图的属性
  • 在装饰视图类(
    noContentDecoration
    )中,重写
    applyLayoutAttributes:
    以从attributes对象中提取数据并应用它们
  • 这看起来太复杂了吗?也许您最好使用补充视图而不是装饰视图。如果改用补充视图,则步骤如下:

  • UICollectionViewDataSource
    (可能是您的视图控制器)中,实现
    collectionView:ViewForSupplmentalElementOfKind:atIndexPath:
    以获取视图(使用
    DequeueReusableSupplmentaryViewOfKind:withReuseIdentifier:forIndexPath:
    ),然后使用数据设置它,然后返回它
  • 如果需要使用模型中的数据对其进行自定义,我建议使用补充视图而不是装饰视图