2017-06-28 22 views
0

アイテムのリストを含むビューコントローラにテーブルビューを配置しました。検索バーの検索バーアイコンをクリックしたとき

[最初の画像に表示されたナビゲーションバーに1つの検索アイコンを置いていました。そのアイコンをクリックすると、検索バーが開き、キャンセルボタンが表示されます。キャンセルボタンが機能しています。 ][1]

今、私は検索ボックスで検索したいと思います。誰でも私のためにコードを手伝ってください。 viewDidLoadで


UIBarButtonItem *searchButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(toggleSearch:)]; 
self.navigationController.navigationBar.topItem.rightBarButtonItem = searchButton; 

toggleSearch:

- (IBAction)toggleSearch:(id)sender 
{ 

    _searchBar = [[UISearchBar alloc] initWithFrame:CGRectZero]; 

    _searchBar.delegate=self; 
    [_searchBar sizeToFit]; 

    searchController= [[UISearchController alloc]initWithSearchResultsController:self]; 
    searchController.searchResultsUpdater = self; 
    searchController.searchResultsUpdater = self; 
    searchController.delegate = self; 

    self.navigationItem.titleView = searchController.searchBar; 

    searchController.hidesNavigationBarDuringPresentation = NO; 

} 

答えて

0

は、あなたが検索バーのデリゲートメソッドを実装する必要があります。

まず、メインアレイをテンポラリアレイに割り当ててから、このコードを追加することができます。

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar{ 
[_searchBar setShowsCancelButton:YES animated:YES]; 
return YES; 
} 

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText 
{ 
NSPredicate *result=[NSPredicate predicateWithFormat:@"SELF CONTAINS[cd] %@",searchText]; 
NSArray * array = [arrTemp filteredArrayUsingPredicate:result]; 
arrMain=[array mutableCopy]; 
[tblview reloadData]; 
} 

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar 
{ 
[_searchBar setShowsCancelButton:NO animated:YES]; 
} 

-(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar 
{ 
NSPredicate *result=[NSPredicate predicateWithFormat:@"SELF CONTAINS[cd] %@",searchBar.text]; 
NSArray * array = [arrTemp filteredArrayUsingPredicate:result]; 
arrMain=[array mutableCopy]; 
[tblview reloadData]; 
[searchBar resignFirstResponder]; 
[_searchBar setShowsCancelButton:NO animated:YES]; 
}