2016-05-17 7 views
0

Ich möchte fragen, wie ich eine Suchleiste in der Navigationsleiste anzeigen kann, wenn ich auf das Suchsymbol in IOS 7 tippte. Fast das gesamte Lernprogramm, das ich durchsuche, unterstützt möglicherweise IOS 7 nicht Sie können eine Idee geben, wie Sie diese Funktionalitäten implementieren können.Suchleiste in der Navigationsleiste anzeigen IOS7

Hier ist der Screenshot unserer UI:

enter image description here

Antwort

-1

(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.

enter image description here

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