我已经集成了一个UISearchDisplayController到我的控制器的厦门国际银行。 基本功能我要为是在导航栏,显示的搜索显示在表头中的搜索栏和按钮。
什么我卡上:当取消被触摸时,我要让搜索栏不可见(保持桌面所以索引0是显示在顶部,而不是搜索栏),但它仍然显示我不知道为什么(见第3图像)。 任何想法如何始终保持在取消按钮被触摸隐藏搜索栏(见图片1)。
我已经试过:
- 设置的tableview contentOffset至44其中一期工程开始。
- 调用[的tableview scrollToRowAtIndexPath:...],这似乎并没有做任何事情。
尝试这个:
- (void)viewWillAppeared:(BOOL)animated
{
[self hidesSeachBar];
[super viewWillAppeared:animated];
}
- (void)hidesSearchBar
{
CGSize searchSize = self.searchDisplayController.searchBar.bounds.size;
//not complete
[self.tableView setContentOffset:CGPointMake(0, searchSize.height)];
}
- (void) searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller
{
//Your code
[self.tableView reloadData];
[self hidesSearchBar];
}
如果你已经宣布你的搜索栏像一个属性
@property(nonatomic, retain)UISearchBar *searchBar;
你可以设置
tableView.tableheader = nil;
并设置回
tableView.tableHeader = searchBar;
当你将再次需要它。
设置内容偏移是隐藏的方式,你需要做的是,当搜索结束。 我使用的是这样的:
- (void) searchDisplayControllerWillEndSearch:(UISearchDisplayController*)controller
{
[self hideSearchBar];
}
- (void) hideSearchBar
{
self.table.contentOffset = CGPointMake( 0, self.searchBar.frame.size.height );
}
隐藏你必须将其设置为灭活UISearchDisplayController的搜索栏。 这将重新显示导航栏,以及
在你的情况,你必须确保采取UISearchBarDelegate协议,则:
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
[self.searchDisplayController setActive:NO animated:YES];
}
要隐藏取消搜索栏,你需要调用UISearchBarDelegate
方法:
(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
if(searchTask)[searchTask cancel];
[self.searchResults removeAllObjects];
[self.searchDisplayController.searchResultsTableView reloadData];
//reload you table here
}
谢谢