我在 iPad 应用程序中有一个集合视图,并想添加搜索功能。集合视图的数据源由 nsfetchedresult 控制器提供。
我将 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];
}
我的问题是,当谓词真正过滤数据集时,放置在键盘上方的工具栏又回到了原来的位置。例如,如果用户键入的内容没有更改数据集,则工具栏将保留在原处。
当用户键入并最终更改集合视图时,如何将工具栏保持在原位?