我的应用程序使用UISearchDisplayController
. 当用户输入搜索词时,我希望它在搜索栏中保持可见。如果用户选择匹配的结果之一,则此方法有效,但如果用户单击“搜索”按钮则无效。
这有效:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView == self.searchDisplayController.searchResultsTableView) {
NSString *selectedMatch = [self.searchMatches objectAtIndex:indexPath.row];
[self.searchDisplayController setActive:NO animated:YES];
[self.searchDisplayController.searchBar setText:selectedMatch];
return;
}
...
但是如果我在-searchBarSearchButtonClicked:
文本中做同样的事情不会留在搜索栏中。关于在这种情况下如何实现这一点的任何想法?
相关,如果我设置搜索栏的文本(但保持UISearchDisplayController
非活动状态),则会触发 searchResultsTableView 的显示。我只想在用户点击搜索栏时显示这一点。
编辑:找到了一种解决方法来设置搜索栏的文本,而不在任何时候显示 searchResultsTableView:
// This hacky YES NO is to keep results table view hidden (animation required) when setting search bar text
[self.searchDisplayController setActive:YES animated:YES];
[self.searchDisplayController setActive:NO animated:YES];
self.searchDisplayController.searchBar.text = @"text to show";
更好的建议仍然欢迎!