在使用Objective-C的应用中,我已将searchDisplayController和searchController更改为支持iOS 8。
它在第一次尝试时效果很好,但是每当我单击搜索栏上的“取消”按钮时,动画完成后,我的搜索栏就会消失。我不希望它消失,每当我回到主屏幕并回到搜索栏屏幕时,它看起来就很完美。
我已经尝试过将搜索栏放置在情节提要中的表格视图之外,但是不起作用。我还尝试了网络上几乎所有可以找到的解决方案。
编辑:我已经在另一个.m文件中尝试了相同的代码块,并且在该屏幕上运行良好,我假设单击取消按钮后会覆盖-重新加载tableview,但是我找不到它。会是什么我想念什么?
EDIT.2:tableview的reloadData函数使其消失了,对此仍然没有解决方案。
以下是有关搜索栏的代码
- (void)viewDidLoad {
[super viewDidLoad];
self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.dimsBackgroundDuringPresentation = NO;
self.searchController.searchBar.delegate = self;
self.tableView.tableHeaderView = self.searchController.searchBar;
self.definesPresentationContext = YES;
[self.searchController.searchBar sizeToFit];
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.searchController.searchBar setTranslucent:NO];
[self.searchController.searchBar setBackgroundColor:_themeColor];
}
- (void)updateSearchResultsForSearchController:(UISearchController *)searchController
{
NSString *searchString = searchController.searchBar.text;
[self searchForText:searchString];
[self.tableView reloadData];
}
- (void)searchBar:(UISearchBar *)searchBar selectedScopeButtonIndexDidChange:(NSInteger)selectedScope
{
[self updateSearchResultsForSearchController:self.searchController];
}
- (void)searchForText:(NSString *)searchString
{
[self filterContentForSearchText:searchString
scope:[[self.searchController.searchBar scopeButtonTitles]
objectAtIndex:[self.searchController.searchBar
selectedScopeButtonIndex]]];
}