'-layoutAttributesForSupplementaryElementOfKind没有UICollectionViewLayoutAttributes实例

时间:2014-09-28 03:16:33

标签: objective-c uicollectionview

我遇到了这个崩溃:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', 
reason: 'no UICollectionViewLayoutAttributes instance for 
-layoutAttributesForSupplementaryElementOfKind: UICollectionElementKindSectionHeader 
at path <NSIndexPath: 0x147b09e0> {length = 2, path = 0 - 0}'

此处performBatchUpdates

    // Reload just the indexPath that loaded
    [UIView animateWithDuration:0 animations:^{
        [self.collectionView performBatchUpdates:^{
            [self.collectionView reloadItemsAtIndexPaths:paths];
        } completion:nil];
    }];

我正在使用UICollectionViewFlowLayout

UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init];
_collectionViewLayout = layout;

我不明白为什么会这样。我正在重新加载我的一个商品单元格,它指的是补充视图(这是一个标题视图)。


修改

以下是否与它有关?

如果我在indexPath中退出- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath,我就会收到第一个电话:

-[WSImageViewerController collectionView:cellForItemAtIndexPath:] [Line 318] indexPath = <NSIndexPath: 0x16d5c990> {length = 2, path = 0 - 0}

indexPath来电的- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath日志是:

-[WSImageViewerController collectionView:viewForSupplementaryElementOfKind:atIndexPath:] [Line 399] indexPath = <NSIndexPath: 0x15691570> {length = 2, path = 0 - 0}

两个indexPath都是0 - 0。这与它有关吗?


编辑两个

enter image description here

这是崩溃时发生的事情。它试图在标题视图上加载常规项单元格。中心有一个大的UIActivityIndi​​catorView,它来自补充标题视图,所以我知道已经添加了。

1 个答案:

答案 0 :(得分:0)

这已经过时了,我不知道你是否属于这种情况,但我想留下这个以防有人遇到同样的问题。如果您正在为UICollectionViewController使用自定义布局,请确保使用正确的名称作为补充视图类型。例如,我使用的是CHTCollectionViewWaterfallLayout,我必须使用CHTCollectionElementKindSectionHeader代替UICollectionElementKindSectionHeader作为补充视图类型名称。