我有一个UICollectionView有部分标题.在section header中有一个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]; [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.
解决方法
尝试了许多不同的选择后,我终于明白了这一点.解决方案是使您自己的部分的标题,以便您可以独立重新加载其他部分,而无需重新加载头部附加到的部分.
所以:
>第0节
>标题
>搜索栏(或其他文本字段)
>行
>(无)
>第1节
>标题
>创建一个空的UICollectionReusableView并覆盖… sizeforItemAtIndexPath:(NSIndexPath *)indexPath返回CGSizeZero
>行
>您的实际行,最初将与第0节
然后,我们需要重新加载数据:
[collectionView reloadSections:[NSIndexSet indexSetWithIndex:1]];
原文地址:https://www.jb51.cc/iOS/334989.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。