4

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];
}

私の問題は、述語が実際にデータセットをフィルタリングすると、キーボードの上に配置されたツールバーが元の位置に戻ることです。たとえば、ユーザーが入力した内容がデータ セットを変更しない場合、ツールバーはそのまま残ります。

ユーザーが入力し、最終的にコレクション ビューを変更している間、ツールバーを所定の位置に保持するにはどうすればよいですか?

4

0 に答える 0