0

我很难过UISearchDisplayController。在我的场景中,我有一个UIView推到导航控制器上。在UIView我有一个UITableViewUIToolbar。在我正在UITableView使用的UISearchDisplayController.

<img></img>

工具栏按钮用于向搜索添加其他过滤器选项。我的问题是我不知道如何在UISearchDisplayController.

在此处输入图像描述

向结果添加工具栏的方法是什么?

4

2 回答 2

0

如果有人好奇如何在仍然使用(可能更清洁)的情况下解决此问题,只需在搜索处于活动状态时UISearchDisplayController将工具栏的项目设置为视图控制器的项目:toolbarItems

self.navigationController.toolbarHidden = NO;
self.toolbarItems = optionsToolbar.items;

根据UISearchDisplayController保留视图控制器的工具栏toolbarItems,因此这可能已经为您完成了。如果工具栏仅在搜索期间使用,则可能很有用。

于 2013-06-22T09:16:47.840 回答
0

我终于设法解决了我的问题。

而不是使用 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;
}
于 2012-09-25T15:50:43.537 回答