2016-05-17 25 views
0

IOS 7の検索アイコンをタップしたときにナビゲーションバーに検索バーを表示する方法について質問したいと思います。ほとんどのチュートリアルはIOS 7をサポートしていませんその機能をどのように実装するかについてのアイデアを伝えることができます。ナビゲーションバーのディスプレイ検索バーIOS7

ここに私たちのUIのスクリーンショットです:

enter image description here

答えて

-1

(1)は、その親ビューに等しい幅を有するビューの上部にあなたのXIBでUISearchBarを追加します。必要な制約を追加する。

enter image description here

(2)IBOutletを設定し、その検索バーにデリゲートを割り当てます。

(3)デリゲートメソッド、次の実装:

# 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)検索ボタン、ショーの検索バーをクリックするだけで

- (IBAction)btnSearchPressed:(id)sender 
{ 
    [searchBarWatches setHidden:FALSE]; 
    [self.view bringSubviewToFront:searchBarWatches]; 
    [searchBarWatches becomeFirstResponder]; 
} 
関連する問題