2017-06-28 3 views
0

Ich habe eine Tabellenansicht in einem Ansichtscontroller platziert, der eine Liste von Elementen enthält.Suchleiste in der Navigationsleiste beim Klicken auf das Symbol

[Ich hatte ein Suchsymbol in der Navigationsleiste im ersten Bild angezeigt. Wenn ich auf dieses Symbol klicke öffnet sich eine Suchleiste und eine Abbrechen-Schaltfläche wird angezeigt. Abbrechen-Taste funktioniert. ][1]

Jetzt möchte ich Suche in Suchfeld.Please kann mir helfen, den Code dafür zu bekommen.


In 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; 

} 

Antwort

0

Sie benötigen searchbar Delegatmethoden zu implementieren.

Zuerst können Sie Ihr Hauptarray einem temporären Array zuweisen und danach können Sie diesen Code hinzufügen.

- (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]; 
} 
Verwandte Themen