20

UICollectionViewセクションヘッダーを持つがあります。セクション ヘッダーにはUISearchBar. 検索バーに入力するときに、コレクション ビューのコンテンツをフィルター処理したいと考えています。私は次の方法でこれを行います:

// The method to change the predicate of the FRC
- (void)filterContentForSearchText:(NSString*)searchText
{
    NSString *query = searchText;
    if (query && query.length) {
        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name contains[cd] %@ or createdAt contains[cd] %@ or noteText contains[cd] %@ or keywords contains[cd] %@", query, query, query, query];
        [self.fetchedResultsController.fetchRequest setPredicate:predicate];
    } else {
        [self.fetchedResultsController.fetchRequest setPredicate:nil];
    }
    NSError *error = nil;
    if (![[self fetchedResultsController] performFetch:&error]) {
        // Handle error
        NSLog(@"Error");
    }
    [self.collectionView reloadData];
}

このメソッドは、検索バーのテキストが変更されるたびに呼び出されます。行[self.collectionView reloadData]はすべての文字のキーボードを隠しました。UICollection ビューのデータのみをリロードし、セクション ヘッダー ヘッダーなどの補足ビューをリロードしないことは可能ですか?

私の collectionView のデータは、NSFetchResultController から取得されます。

UI の動作にはかなり満足しているので、セクション ヘッダーをリロードしない簡単な方法があれば、それは素晴らしいことです!

4

2 に答える 2