4

UICollectionViewのヘッダーやフッター(補足ビュー)ではなく、データセクションのみをリロードしようとしています。

メソッドを使用reloadDataすると、ヘッダーとフッターのセクションもリロードされるので、それが必要です。

メソッドを見つけましたが、reloadSections:なぜ機能しないのかわかりません。

私のコレクション ビューには 1 つのセクションしか含まれていないため、次のような方法を使用してみました。

[collectionViewController.collectionView reloadSections:[NSIndexSet indexSetWithIndex:0]];

ただし、メソッドが呼び出されると実行時エラーが発生します。エラーの内容は次のとおりです。

'NSInvalidArgumentException', reason: '-[UICollectionViewUpdateItem action]:
unrecognized selector sent to instance 0x90aec00'

メソッドreloadSections:はこのように使用することはできませんか? ヘッダーまたはフッター セクションではなく、データ セクションのみをリロードする別の方法はありますか?

4

1 に答える 1

6

reloadSections:検索バーがコレクションビューのサブビューであり、キーボード入力がオンになっているときに呼び出そうとすると、エラーが発生すると思います。

この記事は同様の問題に対する回答を提供しますが、それは私にとってはうまくいきませんでした。

そこで、ほぼ同じ機能を呼び出すことができる別の方法を使用しました。

補助ビューとしてヘッダーを追加する代わりに、ヘッダーを「ビュー」のサブビューにしました。(コレクションビューではありません)

また、テーブル ビューのヘッダーを模倣するスクロール デリゲートを追加しました。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGFloat y = scrollView.contentOffset.y;
    if (y < 44) {
        [self.searchBar setFrame:CGRectMake(0, -y, 320, 44)];
        [self.searchBar setHidden:NO];
    } else if (y >= 44) {
        [self.searchBar setHidden:YES];
    }  
} 
于 2013-01-30T13:43:17.160 に答える