我在iPad应用中有一个收藏视图,想要添加搜索功能。集合视图的数据源由nsfetchedresultcontroller提供。
我将UISearchBar放在位于窗口下部的UIToolBar中。当用户点击搜索栏时,我将整个工具栏的移动与键盘的外观一起动画,以使工具栏(以及搜索栏)可见。当用户在搜索栏中输入内容时,我实现了以下方法:
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if (searchText && searchText.length){
NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:@"name contains[cd] %@", searchText];
[NSFetchedResultsController deleteCacheWithName:nil];
[self.fetchedResultsController.fetchRequest setPredicate:searchPredicate];
}else{
[NSFetchedResultsController deleteCacheWithName:nil];
[self.fetchedResultsController.fetchRequest setPredicate:nil];
}
[self performFetch];
}
我的问题是,当谓词真正过滤数据集时,放在键盘上方的工具栏会返回其原始位置。例如,如果用户键入的内容不会更改数据集,则工具栏将保留在原位。
如何在用户输入时保持工具栏的位置,最终更改集合视图?