2010-12-14 1 views
4

Я применил UISearchDisplayController, используя образец примера Apple TableSearch. Мой список содержит чуть более 10.000 элементов, что делает фильтрацию слишком медленной, чтобы выполнить ее на каждом символе, который вводит пользователь. Мне удалось ограничить поиск, когда пользователь нажимает кнопку поиска со следующим кодом.UISearchDisplayController без мгновенного поиска: как я могу управлять уменьшением масштаба TableView?

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

Теперь моя проблема в том, что, как только пользователь вводит первый символ димминг в табличном исчезает, и я хотел бы сохранить его серым цветом до тех пор, пока пользователь не нажмет Поиск бутон. (Или отменяет поиск.)

ответ

3

SearchDisplayController - это черный ящик, поэтому вы не можете контролировать его, когда он отображает searchResultsTableView (который при первом нажатии клавиши в SearchBar).

Вы можете отобразить полупрозрачный вид на результатTableView, чтобы придать вид начального затемнения, предоставляемый функцией 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; 
} 

Другой вариант заключается в том, чтобы закодировать свой собственный.