我有一个应用程序异步搜索远程API并使用iOS'UISearchDisplayController显示UI。
对于已保存的搜索功能,我一直在尝试以编程方式使用UISearchDisplayController,以便启动搜索,并将用户界面设置为他以前所处的位置。 (即,我正试图调出搜索栏并设置搜索词。)
searchTableViewController.searchDisplayController.searchBar.text = mySearchTerm;
//[...]
[searchTableViewController.searchDisplayController setActive:YES animated:YES];
[searchTableViewController performSearch];
我迄今为止尝试过的代码似乎没有做到这一点。虽然它正确显示搜索栏,设置搜索词并执行搜索,但系统似乎不会以某种方式将其识别为有效搜索。如果我在结果视图中使用我的手指使键盘消失,搜索词将自行重置并且结果消失。
帮助表示感谢。谢谢!
答案 0 :(得分:0)
我遇到了同样的问题。我通过创建ivar NSString * savedSearchString;
并在UISearchDisplayController的委托中添加以下方法来解决这个问题。
- (void) searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller
{
// saves search string for next search
[savedSearchString release];
savedSearchString = [controller.searchBar.text retain];
return;
}
- (void) searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller
{
// shows keyboard and gives text box in searchBar the focus
[controller.searchBar becomeFirstResponder];
// shows previous search results
if ((savedSearchString))
controller.searchBar.text = savedSearchString;
return;
}
将行controller.searchBar.text = savedSearchString;
添加到searchDisplayControllerWillBeginSearch:
会导致搜索字词出现在UISearchBar中,但不会重新加载结果表。
如果存在先前的搜索字符串,则转换有点粗糙。如果我发现没有粗略过渡的更好的实现,我会更新我的答案。