0

と苦労していUISearchDisplayControllerます。私のシナリオではUIView、ナビゲーションコントローラーにプッシュしています。UIViewi にはとがUITableViewありUIToolbarます。UITableViewを使用していUISearchDisplayControllerます。

<img></img>

ツールバー ボタンを使用して、検索にフィルター オプションを追加します。私の問題は、の結果テーブルビューの下部にツールバーを追加する方法がわからないことUISearchDisplayControllerです。

ここに画像の説明を入力

結果にツールバーを追加するにはどうすればよいですか?

4

2 に答える 2

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 に答える
0

まだ使用している状態でこの問題を解決する方法に興味がある場合UISearchDisplayController(おそらくよりクリーン)、toolbarItems検索がアクティブなときに、ツールバーの項目をビュー コントローラーの項目に設定するだけです。

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

UISearchDisplayControllerは、 に従ってビュー コントローラのツールバーを保持するためtoolbarItems、これは既に行われている可能性があります。ツールバーが検索中にのみ使用されている場合に便利です。

于 2013-06-22T09:16:47.840 に答える