我正在使用自定义UICollectionViewFlowLayout,并且我已经为此布局注册了自定义可重用类。
[self registerClass:[noContentDecoration class] forDecorationViewOfKind:knoContentsDecorationKind];
现在,我想在初始化阶段将一些数据传递到此装饰视图,我想在此可重用类中设置一些属性
但是我无法到达此视图,我只为UICollectionView找到了此委托方法:
- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingSupplementaryView:(UICollectionReusableView *)view forElementOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath
但是这里的问题是:仅当按照文档中所述删除可重用视图时,才调用此方法:
使用此方法来检测何时从集合视图中删除补充视图,而不是监视视图本身以查看它何时出现或消失。
在初始化过程中如何将数据传递到此可重用视图?
谢谢
最佳答案
您正在使用装饰视图。将数据传递给它很复杂。
UICollectionViewLayoutAttributes
的自定义子类来保存数据。 UICollectionViewLayout
子类中,重写layoutAttributesClass
以返回自定义属性类。 UICollectionViewLayout
子类中,在layoutAttributesForElementsInRect:
和layoutAttributesForDecorationViewOfKind:atIndexPath:
中正确设置装饰视图的属性。 noContentDecoration
)中,重写applyLayoutAttributes:
以将数据拉出属性对象并应用它们。 这看起来太复杂了吗?也许您最好使用补充视图而不是装饰视图。如果改为使用补充视图,则步骤为:
UICollectionViewDataSource
(可能是您的视图控制器)中,实现collectionView:viewForSupplementaryElementOfKind:atIndexPath:
以获取视图(使用dequeueReusableSupplementaryViewOfKind:withReuseIdentifier:forIndexPath:
),然后将其与数据一起设置,然后返回它。 如果您需要使用模型中的数据来自定义视图,建议使用补充视图而不是装饰视图。