我的應用使用UISearchDisplayController
。當用戶輸入搜索詞時,我希望它在搜索欄中保持可見。如果用戶選擇了其中一個匹配的結果,那麼這將起作用,但如果用戶單擊「搜索」按鈕則不起作用。當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";
更好的建議,歡迎仍然!
啊謝謝!我在做`[self.searchController setActive:NO animated:YES]; self.searchController.searchBar.text = searchBar.text;`但顯然`searchBar.text`不再是我認爲這是由於`setActive`方法清空搜索欄。 – 2011-01-21 07:25:01