1

如何在 UISearchDisplayController 中预加载搜索查询。目前我正在做以下事情:

    [self.searchDisplayController setActive: YES animated: YES];
    self.searchDisplayController.searchBar.hidden = NO;
    self.searchDisplayController.searchBar.text = self.pendingSearchTerm;
    [self.searchDisplayController.searchBar becomeFirstResponder];

尽管这会显示搜索结果窗口并搜索表格,但它不会像用户单击搜索栏时那样在导航栏中显示搜索栏。如果未显示搜索栏,则用户可能不清楚搜索是否已执行。

有没有办法让搜索栏出现?

4

2 回答 2

0

您可以做的是当用户单击搜索并且字符串为空时,将 searchBartext 更改为“\n”回车

self.searchDisplayController.searchBar.text = @"\n";

回车不会显示在搜索栏中,也不会是相同的字符串,就像用户键入“\n”一样。所以它工作正常。在里面

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString 

方法您可以将搜索栏文本设置回@""。如果搜索字符串是 @"\n"

self.searchDisplayController.searchBar.text = @"";

这对我有用!

于 2014-01-25T00:34:18.223 回答
0

所以经过一番蛮力,我终于想出了一个可行的解决方案。

这是我的设置:我有两个表视图 - T1、T2。T1 的数据是本地的,T2 从 Internet 获取数据。当用户在 T1 中搜索并且没有结果时,用户可以点击一个按钮在 T2 上执行相同的搜索。所以现在当 T2 出现时,它会默认显示导航项 - 这是我无法更改的。

在-[T2 viewDidAppear:]

    [self.searchDisplayController setActive: YES animated: NO];
    self.searchDisplayController.searchBar.text = self.pendingSearchTerm;
    self.searchDisplayController.searchResultsTableView.hidden = YES; // so that we don't see "no results"

当 T2 的数据准备好时:

[self.tableView reloadData];
self.searchDisplayController.searchBar.text = self.searchDisplayController.searchBar.text; // to reload search
self.searchDisplayController.searchResultsTableView.hidden = NO;

希望这可以帮助某人。如果您能够找到一种最初隐藏导航栏的方法,那将解决我剩下的问题。

于 2012-11-07T11:47:45.327 回答