我很难过UISearchDisplayController
。在我的场景中,我有一个UIView
推到导航控制器上。在UIView
我有一个UITableView
和UIToolbar
。在我正在UITableView
使用的UISearchDisplayController
.
工具栏按钮用于向搜索添加其他过滤器选项。我的问题是我不知道如何在UISearchDisplayController
.
向结果添加工具栏的方法是什么?
我很难过UISearchDisplayController
。在我的场景中,我有一个UIView
推到导航控制器上。在UIView
我有一个UITableView
和UIToolbar
。在我正在UITableView
使用的UISearchDisplayController
.
工具栏按钮用于向搜索添加其他过滤器选项。我的问题是我不知道如何在UISearchDisplayController
.
向结果添加工具栏的方法是什么?
如果有人好奇如何在仍然使用(可能更清洁)的情况下解决此问题,只需在搜索处于活动状态时UISearchDisplayController
将工具栏的项目设置为视图控制器的项目:toolbarItems
self.navigationController.toolbarHidden = NO;
self.toolbarItems = optionsToolbar.items;
根据UISearchDisplayController
保留视图控制器的工具栏toolbarItems
,因此这可能已经为您完成了。如果工具栏仅在搜索期间使用,则可能很有用。
我终于设法解决了我的问题。
而不是使用 UISearchDisplayController 我只添加一个 UISearchBar 到我的 UITableView 并使用 UISearchBarDelegate 方法复制 UISearchDisplayController 的行为。
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
[self setSearchText:searchText];
[self filterCards];
}
- (void)searchBar:(UISearchBar *)searchBar selectedScopeButtonIndexDidChange:(NSInteger)selectedScope
{
[self setScopeIndex:selectedScope];
[self filterCards];
}
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
// Move searchbar to table view
[self.chapterSearchBar removeFromSuperview];
[self.chapterTableView addSubview:[self chapterSearchBar]];
// Show navigation controller
[self.navigationController setNavigationBarHidden:NO animated:YES];
// Hide scope bar an resize
[searchBar setShowsScopeBar:NO];
[searchBar sizeToFit];
// Hide cancel button
[searchBar setShowsCancelButton:NO animated:YES];
// Resize table view
CGRect tableViewRect = [self.chapterTableView frame];
tableViewRect.origin.y = 0;
[self.chapterTableView setFrame:tableViewRect];
// Hide keyboard
[searchBar resignFirstResponder];
[self setSearchText:@""];
[self filterCards];
}
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
[searchBar resignFirstResponder];
}
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
{
// Move searchbar to controller view
[self.chapterSearchBar removeFromSuperview];
[self.view addSubview:[self chapterSearchBar]];
// Hide navigation controller
[self.navigationController setNavigationBarHidden:YES animated:YES];
// Show scope bar an resize
[searchBar setShowsScopeBar:YES];
[searchBar sizeToFit];
// Show cancel button
[searchBar setShowsCancelButton:YES animated:YES];
// Resize table view
CGRect tableViewRect = [self.chapterTableView frame];
tableViewRect.origin.y = 44;
[self.chapterTableView setFrame:tableViewRect];
return YES;
}