uisearchdisplaycontroller预加载搜索结果和搜索栏

时间:2012-11-06 09:21:51

标签: iphone ios uitableview uisearchdisplaycontroller

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

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

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

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

2 个答案:

答案 0 :(得分:0)

因此经过大量的蛮力,我终于想出了一个可行的解决方案。

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

In - [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;

希望这有助于某人。如果你能够找到最初隐藏导航栏的方法,那就解决了我的其余问题。

答案 1 :(得分:0)

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

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

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

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

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

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

这对我有用!