到目前为止,我只熟悉UISearchDisplayController的一种做法,即将它与放在tableView上的UISearchBar集成在一起。我看到一些应用程序在单击栏按钮项时触发UISearchDisplayController而不是触摸searchBar。有谁知道怎么做?
答案 0 :(得分:0)
通过在搜索栏的2个委托方法中编写以下代码,我已经找到了一个技巧
- (void)searchButtonTapped:(id)sender
{
self.dictionaryTableView.tableHeaderView = _searchBar;
[self.searchDC setActive:YES animated:YES];
[self.searchDC.searchBar becomeFirstResponder];
}
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
[self.searchDC setActive:NO animated:YES];
self.dictionaryTableView.tableHeaderView = nil;
}
如果搜索栏不是视图的一部分,则问题是UISearchDisplayController甚至不会出现调用setActive。因此,当点击按钮时,我将searchBar设置为tableViewHeader,并激活searchdisplaycontroller。然后当搜索完成时,我停用searchdisplaycontroller,并设置nil tableViewHeader以确保搜索栏不会在屏幕上显示。