2015-06-10 11 views
11

Ich versuche, die Suchleiste im Blick zu behalten, während die Tabelle scrollt. Im Moment platziere ich es als Kopfzeile in einer Tabellenansicht, und es funktioniert wie es sollte, aber natürlich scrollt die Suchleiste vom Bildschirm weg, wenn Sie den Tisch hinuntergehen. Ich dachte, ich dies einfach tun könnte dieses Codebeispiel ändern:Wie kann ich die UISearchController des SearchBar auf einen Blick festgelegt, die nicht die tableHeaderView oder navigationItem.titleview ist?

How do I use UISearchController in iOS 8 where the UISearchBar is in my navigation bar and has scope buttons?

searchController = UISearchController(searchResultsController: nil) 
searchController.searchResultsUpdater = self 
searchController.delegate = self 
searchController.searchBar.delegate = self 
searchController.dimsBackgroundDuringPresentation = false 
searchController.hidesNavigationBarDuringPresentation = false 
tableview.tableHeaderView = searchContoller.searchBar // How to put it elsewhere? 
//Alternative that also works 
navigationItem.titleView = searchController.searchBar 

Die Idee, eine andere Ansicht zu nehmen war und

otherview = searchController.searchBar 

Zum Beispiel einen Auslass zu einem UISearchBar tun, oder eine leere UIView, oder so ähnlich.

Aber es zeigt nicht die SearchBar, wenn ich das tun. Es scheint nur als Header-Ansicht einer Tabelle oder als navigationItem.titleView zu funktionieren.

Fehle ich etwas?

+1

hinzufügen Wenn Sie eine leere UIView Platz über dem Tableview haben, lassen Sie uns sagen, dass Sie eine Steckdose, die leere UIView namens 'searchContainer' , dann können Sie die Suchleiste zu dieser Ansicht durch 'searchContainer.addSubview (searchController.searchBar)' –

+0

das ist richtig hinzuzufügen! Fügen Sie hinzu und beantworten Sie und Sie werden noch mehr Punkte erzielen. – Carlos

Antwort

19

Wenn Sie eine leere UIView haben, die über dem Tableview platziert wird.

Nehmen wir an, Sie haben eine Steckdose zu diesem leeren UIView namens searchContainer. Dann können Sie die Suchleiste des UISearchController zu dieser Ansicht, indem Sie die folgende Zeile

searchContainer.addSubview(searchController.searchBar) 
+0

es funktionierte großartig für mich, die SearchBar im View-Controller hinzuzufügen, aber die searchResultsController löst nicht jedes Mal, wenn ich versuchen, ihn zu bearbeiten, das erste Mal. Aber wenn ich ein barButtonItem verwende, um die searchBar zu starten, wird der searchResultsController und die eigentliche Suche jedes Mal ausgelöst. Fehle ich hier etwas? – gadget00

+0

Gelegentlich sollten Sie Ihre 'viewDidLoad'-Methode mit' definesPresentationContext = true' und 'extendedLayoutIncludesOpaqueBars = true' einrichten, um Fehlverhalten im Layout zu vermeiden. – Leandro

+0

Gibt es eine Möglichkeit, die Höhe und die Breite des searchController.searchBar einzustellen vor/nach als Subview hinzufügen? – coolcool1994