我有一个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 的工作方式非常满意,所以如果有一种简单的方法可以不重新加载节标题,那就太好了!