没有即时搜索的UISearchDisplayController:如何控制TableView的调光?

时间:2010-12-14 00:35:55

标签: cocoa-touch uisearchdisplaycontroller

我使用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;
}

现在,我的问题是,只要用户输入第一个字符,表格视图的调光就会消失,我想让它变暗,直到用户点击搜索按钮。 (或取消搜索。)

1 个答案:

答案 0 :(得分: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;
}

另一种选择是自己编码。