4

補足ヘッダー ビューを実装すると、次のエラーが発生します。

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

これはヘッダービューを作成しているコードです

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
    static NSString * headerIdentifier = @"HeaderView";
    UICollectionReusableView *header = [collectionView dequeueReusableSupplementaryViewOfKind:headerIdentifier withReuseIdentifier:UICollectionElementKindSectionHeader forIndexPath:indexPath];
    return header;
}

エラーは dequeueReusableSupplementaryViewOfKind メソッドで発生します。

Collection View Controller の initWithCoder にこれらの 2 行を追加しました。

UINib *headerNib = [UINib nibWithNibName:@"MTCollectionHeaderView" bundle:nil];
[self.collectionView registerNib:headerNib forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"HeaderView"];

そのため、UI 要素への参照があります。とにかく、ヘッダーにレイアウトを設定する方法が見つかりません。

これを同じ Collection View Controller に追加しようとしましたが、デバッガーを配置して確認したため、このコードにはヒットしませんでした

- (UICollectionViewLayoutAttributes *)layoutAttributesForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
    return [self.collectionViewLayout layoutAttributesForDecorationViewOfKind:kind atIndexPath:indexPath];
}

誰かがこの問題を見たことがありますか?どのように解決しましたか? また、XCode 5 Developer Preview 5 を使用し、iOS7 向けに開発しています。

4

1 に答える 1

6

補足ビューの種類に headerIdentifier を渡し、ヘッダー識別子に種類定数を渡していると思います。collectionView:viewForSupplementaryElementOfKind:atIndexPath:メソッドの次のコード行に示すように、それらを切り替えてみてください。

UICollectionReusableView *header = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:headerIdentifier forIndexPath:indexPath];

の実装も必要ないと思います。layoutAttributesForSupplementaryElementOfKind:atIndexPath:上記のコード行を入れ替えて、動作するかどうかを確認してください。

于 2013-08-09T05:56:25.500 に答える