(1) hinzufügen UISearchBar
in Ihrem XIB am oberen Rand der Ansicht Breite gleich der übergeordneten Ansicht mit. Fügen Sie die erforderlichen Einschränkungen hinzu.
(2) Set IBOutlet
und weisen Delegierten zu dieser Suchleiste.
(3) Implementieren Delegatmethoden folgende:
# pragma mark
# pragma mark - SearchBar delegate
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
[searchBarWatches resignFirstResponder];
searchBarWatches.text = @"";
[UIView animateWithDuration:0.25 animations:^{
searchBarWatches.alpha = 0.0;
} completion:^(BOOL finished) {
[searchBarWatches setHidden:TRUE];
searchBarWatches.alpha = 1.0;
}];
}
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
// searchBarTextDidBeginEditing
}
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
{
strSearchText = @"";
[self searchWatchWithString:strSearchText];
}
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
searchText = [searchText stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];
if([searchText isEqualToString:strSearchText]) {
return;
}
if([searchText length] > 0) {
strSearchText = searchText;
} else {
strSearchText = @"";
}
[self searchWatchWithString:strSearchText];
}
-(void)searchWatchWithString:(NSString *)strSearch
{
if([strSearch length] > 0)
{
NSPredicate *predicate1 = [NSPredicate predicateWithFormat:....];
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:....];
NSPredicate *predicate3 = [NSPredicate predicateWithFormat:....];
NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[predicate1, predicate2, predicate3]];
[[self.fetchedResultsController fetchRequest] setPredicate:predicate];
}
else
{
// Empty string
}
[self performFetch];
[self reloadTableViewAnimated:TRUE];
}
-(void)reloadTableViewAnimated:(BOOL)animated
{
if(animated) {
[tblProducts reloadSections:[NSIndexSet indexSetWithIndex:0]];
} else {
[tblProducts reloadData];
}
}
(4) Bei Klick auf Suchtaste, zeigen Suchleiste:
- (IBAction)btnSearchPressed:(id)sender
{
[searchBarWatches setHidden:FALSE];
[self.view bringSubviewToFront:searchBarWatches];
[searchBarWatches becomeFirstResponder];
}