2016-06-11 6 views
0

ich diese Anleitung gefolgt: http://www.jhof.me/simple-uisearchcontroller-implementation/UISearchBar bleibt, wenn per Push an einen anderen View-Controller seguing

Der einzige Unterschied in meinem Code ist

statt self.tableView.tableHeaderView = self.searchController.searchBar;

Ich habe self.navigationItem.titleView = self.searchController.searchBar;

Als ich Die uisearchbar bleibt in der Navigationsleiste erhalten.

+0

Wenn Sie die Suchleiste der Navigationsleiste als Titelansicht hinzufügen, wird die Suchleiste immer in der Navigationsleiste angezeigt. –

+0

Aber wenn ich von der ersten tableView abschneide, verschwindet sie, nur wenn ich nach der Suche von der Ergebnistabellenansicht abschneide bleibt – farhan

+0

jetzt sehe ich, was Sie wollen. siehe meine Antwort –

Antwort

0

Ich schreibe das Sample von Apple, Sie können sehen, ich kommentieren self.tableView.tableHeaderView = self.searchController.searchBar; dann legen Sie es in der Titelansicht der Navigationsleiste, genau wie Sie. Sie finden die Suchleiste hier im Snapshot.

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    APLResultsTableController *qresultsTableController = [[APLResultsTableController alloc] init]; 
    self.resultsTableController = qresultsTableController; 
    _searchController = [[UISearchController alloc] initWithSearchResultsController:qresultsTableController]; 
    self.searchController.searchResultsUpdater = self; 
    [self.searchController.searchBar sizeToFit]; 
// self.tableView.tableHeaderView = self.searchController.searchBar; 
    self.navigationItem.titleView = self.searchController.searchBar; 
    self.searchController.hidesNavigationBarDuringPresentation = NO; 

    // we want to be the delegate for our filtered table so didSelectRowAtIndexPath is called for both tables 
    self.resultsTableController.tableView.delegate = self; 
    self.searchController.delegate = self; 
    self.searchController.dimsBackgroundDuringPresentation = NO; // default is YES 
    self.searchController.searchBar.delegate = self; // so we can monitor text changes + others 

    // Search is now just presenting a view controller. As such, normal view controller 
    // presentation semantics apply. Namely that presentation will walk up the view controller 
    // hierarchy until it finds the root view controller or one that defines a presentation context. 
    // 
    self.definesPresentationContext = YES; // know where you want UISearchController to be displayed 
} 

Schnappschuss hier ist,

enter image description here

UISearchBarController hat eine Eigenschaft namens hidesNavigationBarDuringPresentation Standard JA ist, setzen Sie ihn auf NEIN, wenn Sie es als Navigationspunkt der Titelansicht verwenden möchten

self.searchController.hidesNavigationBarDuringPresentation = NO; 

Ich habe getestet, es funktioniert. hoffe es hilfreich.

+0

ich habe das schon auf NO gesetzt. aber es bleibt immer noch in der nav bar, wenn ich aus der ergebnisse tableview – farhan

+0

@farhan Es gibt ein beispiel über UISearchController von Apple, ich umschreiben einige einfache code basierend darauf, ich posten es in meine antwort, es tun das gleiche was sie wollen zu tun und zu arbeiten. –

+0

Okay danke, überprüfen Sie es. – farhan