2015-04-28 11 views
9

Ich versuche, den neuen UISearchController in meinem TableViewController zu verwenden.UISearchController in navigationBar

Allerdings bin ich etwas verwirrt wie ich beim Drücken der searchBar es in der navigationController genau nach oben verschieben kann wie es mit dem alten searchDisplayController gemacht hat?

Momentan bleibt es einfach im tableHeader.

ist hier mein Code:

self.teamSearchController = ({ 
     let controller = UISearchController(searchResultsController: nil) 

     controller.searchBar.searchBarStyle = UISearchBarStyle.Minimal 
     controller.dimsBackgroundDuringPresentation = false 
     controller.searchBar.sizeToFit() 
     controller.searchBar.showsScopeBar = true 
     self.tableView.tableHeaderView = controller.searchBar 

     return controller 
    })() 

Controller:

enter image description here

Wenn ich auf searchbar klicken:

enter image description here

+0

Entfernen 'controller.hidesNavigationBarDuringPresentation = false' sollten Sie auch das Verhalten geben Sie –

+0

erwartet werden Ich habe 2 Bild hinzugefügt, die das Verhalten descripe –

+0

Ihre searchController des hidesNavigationBarDuringPresentation auf true gesetzt und versuchen Sie wechseln Viewcontroller des definesPresentationContext das Ergebnis sehen. verbirgt nieNavigationBarDuringPresentation zu false und setzt die Suchleiste niemals auf navigationItems titleView, wenn Sie das gewünschte Verhalten haben wollen. – Solomon

Antwort

16

Sie können die UISearchBar vonplatzierenin der Navigationsleiste statt Tabellenkopf

self.searchController.hidesNavigationBarDuringPresentation = NO; 
self.searchController.searchBar.searchBarStyle = UISearchBarStyleMinimal; 

// Include the search bar within the navigation bar. 
self.navigationItem.titleView = self.searchController.searchBar; 

self.definesPresentationContext = YES; 
+0

Ich habe 2 Bilder hinzugefügt, die das Verhalten beschreiben –

+0

Haben Sie die Lösung in dieser Antwort versucht? –

+0

Nein, aber das wird von Anfang an an die Spitze hinzufügen und nicht das gleiche Verhalten wie in searchDisplayController –

2

Swift Version:

self.searchController.hidesNavigationBarDuringPresentation = false 
self.searchController.searchBar.searchBarStyle = UISearchBarStyle.Minimal 

// Include the search bar within the navigation bar. 
self.navigationItem.titleView = self.searchController.searchBar 
self.definesPresentationContext = true 
0

Es ist mit der Navigationsleiste zu tun hat.

func willPresentSearchController(searchController: UISearchController) { 
    self.navigationController?.navigationBar.translucent = true 
} 

func willDismissSearchController(searchController: UISearchController) { 
    self.navigationController?.navigationBar.translucent = false 
} 

Wenn Sie dies tun, dann werden Sie in der Lage sein, es Header der Tabellenansicht hinzuzufügen und die backene auf der Suche Controller Animation zu erhalten!

Verwandte Themen