4

Apple のTableSearchサンプル リファレンスを使用して UISearchDisplayController を実装しました。私のリストには 10,000 を超える要素が含まれているため、ユーザーが入力するすべての文字に対してフィルタリングを実行するには遅すぎます。ユーザーが次のコードで検索ボタンをクリックしたときに検索を制限することができました。

- (void)searchBarSearchButtonClicked:(UISearchBar*)searchBar
{
    [self filterContentForSearchText:[self.searchDisplayController.searchBar text]
        scope:[self.searchDisplayController.searchBar selectedScopeButtonIndex]];
    [self.searchDisplayController.searchResultsTableView reloadData];
}

- (BOOL)searchDisplayController:(UISearchDisplayController*)controller
    shouldReloadTableForSearchString:(NSString*)searchString
{
    return NO;
}

さて、私の問題は、ユーザーが最初の文字を入力するとすぐにテーブル ビューの淡色表示が消え、ユーザーが [検索] ボタンをクリックするまで淡色表示のままにしたいということです。(または検索をキャンセルします。)

4

1 に答える 1

3

searchDisplayController はブラック ボックスであるため、searchResultsTableView (searchBar で最初にキーを押したとき) を表示するタイミングを制御することはできません。

resultsTableView の上に半透明のビューを表示して、searchDisplayController によって提供される初期の淡色表示の外観を与えることができますが、searchResultsTableView は引き続き表示されます。

- (BOOL)searchDisplayController:(UISearchDisplayController*)controller
    shouldReloadTableForSearchString:(NSString*)searchString
{
    // display a translucent view over the searchResultsTableView and
    // make sure it's only created on first key press
    return NO;
}

もう 1 つのオプションは、独自にコーディングすることです。

于 2010-12-31T19:36:14.963 に答える