2012-11-06 56 views
1

如何在UISearchDisplayController中预加载搜索查询。目前,我做了以下内容:uisearchdisplaycontroller预载搜索结果和搜索栏

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

虽然这显示了搜索结果窗口,并在表中搜索,它并没有显示在导航栏就像它将如果用户点击了搜索栏搜索栏。如果搜索栏未显示,用户可能不清楚搜索已执行。

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

回答

0

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

这是我的设置:我有两个表视图 - T1,T2。 T1的数据是本地的,T2从互联网获取数据。当用户在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; 

希望这可以帮助别人。如果您能够找出最初隐藏导航栏的方法,那将解决我的其他问题。

0

你可以做的是当用户点击搜索和字符串为空改变searchBartext成“\ n”回车

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

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

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

方法,你可以设置搜索栏的文本回@“”。如果搜索字符串是@“\ n”

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

这就是为我工作的!