这实际上不是一个错误。每个文档的装饰视图独立于数据源。
装饰视图是增强集合视图布局外观的视觉装饰。与单元格和补充视图不同,装饰视图仅提供视觉内容,因此独立于数据源。您可以使用它们来提供自定义背景、填充单元格周围的空间,甚至根据需要隐藏单元格。装饰视图仅由布局对象定义和管理,不与集合视图的数据源对象交互。
如果您想说,在您的集合视图后面添加背景图像,则装饰视图会更适合,它的显示保持独立于数据。
页眉、页脚和其他补充视图可以通过以下方法使用数据源进行更新:
collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView
并且它们的定位和布局可以通过覆盖来控制
layoutAttributesForElementsInRect(rect: CGRect) -> [AnyObject]?
和
layoutAttributesForSupplementaryViewOfKind(elementKind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionViewLayoutAttributes!
从您的自定义流程布局中。
在我看来,解决问题的最佳方法是,如果您不想手动查找和删除装饰视图,则可以用补充视图替换装饰视图,这样就可以使用数据源对其进行更新。