如何在UISearchDisplayController中预加载搜索查询。目前我正在做以下事情:
[self.searchDisplayController setActive: YES animated: YES];
self.searchDisplayController.searchBar.hidden = NO;
self.searchDisplayController.searchBar.text = self.pendingSearchTerm;
[self.searchDisplayController.searchBar becomeFirstResponder];
虽然这会显示搜索结果窗口并且还会搜索表格,但它不会像用户点击搜索栏那样在导航栏中显示搜索栏。如果搜索栏未显示,则可能不清楚用户是否已执行搜索。
有没有办法让搜索栏出现?
答案 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 = @"";
这对我有用!