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,
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.
Wenn Sie die Suchleiste der Navigationsleiste als Titelansicht hinzufügen, wird die Suchleiste immer in der Navigationsleiste angezeigt. –
Aber wenn ich von der ersten tableView abschneide, verschwindet sie, nur wenn ich nach der Suche von der Ergebnistabellenansicht abschneide bleibt – farhan
jetzt sehe ich, was Sie wollen. siehe meine Antwort –