У меня есть 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 и не перезагружать дополнительные представления, такие как заголовки заголовков разделов?
Данные в моей коллекцииView поступают из NSFetchResultController.
Я очень доволен тем, как работает мой пользовательский интерфейс, если есть простой способ НЕ перезагрузить заголовок раздела, тогда это было бы здорово!