【问题标题】:uisearchdisplaycontroller preload search results and search baruisearchdisplaycontroller 预加载搜索结果和搜索栏
【发布时间】:2012-11-06 09:21:51
【问题描述】:
如何在 UISearchDisplayController 中预加载搜索查询。目前我正在做以下事情:
[self.searchDisplayController setActive: YES animated: YES];
self.searchDisplayController.searchBar.hidden = NO;
self.searchDisplayController.searchBar.text = self.pendingSearchTerm;
[self.searchDisplayController.searchBar becomeFirstResponder];
虽然这会显示搜索结果窗口并搜索表格,但它不会像用户单击搜索栏时那样在导航栏中显示搜索栏。如果搜索栏未显示,用户可能不清楚搜索已执行。
有没有办法让搜索栏出现?
【问题讨论】:
标签:
iphone
ios
uitableview
uisearchdisplaycontroller
【解决方案1】:
所以经过一番蛮力,我终于想出了一个可行的解决方案。
这是我的设置:我有两个表视图 - 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;
希望这对某人有所帮助。如果您能够找到一种最初隐藏导航栏的方法,那将解决我剩下的问题。
【解决方案2】:
您可以做的是当用户点击搜索并且字符串为空时,将 searchBartext 更改为“\n”回车
self.searchDisplayController.searchBar.text = @"\n";
回车不会显示在搜索栏中,也不会是相同的字符串,就像用户键入“\n”一样。所以它工作正常。
在
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
方法您可以将搜索栏文本设置回@""。如果搜索字符串是 @"\n"
self.searchDisplayController.searchBar.text = @"";
这对我有用!