iPad アプリにコレクション ビューがあり、検索機能を追加したいと考えていました。コレクション ビューのデータ ソースは、nsfetchedresultcontroller によって提供されます。
ウィンドウの下部にある UIToolBar に UISearchBar を配置しました。ユーザーが検索バーをタップすると、ツールバー (およびその結果として検索バー) が表示されるように、キーボードの外観と共にツールバー全体の動きをアニメーション化しました。ユーザーが検索バーに入力すると、次のメソッドを実装しました。
-(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];
}
私の問題は、述語が実際にデータセットをフィルタリングすると、キーボードの上に配置されたツールバーが元の位置に戻ることです。たとえば、ユーザーが入力した内容がデータ セットを変更しない場合、ツールバーはそのまま残ります。
ユーザーが入力し、最終的にコレクション ビューを変更している間、ツールバーを所定の位置に保持するにはどうすればよいですか?