2015-06-10 11 views
11

Sto cercando di mantenere la barra di ricerca in vista mentre scorre la tabella. Al momento lo sto posizionando come intestazione in una vista tabella, e funziona come dovrebbe, ma ovviamente la barra di ricerca scorre fuori dallo schermo mentre scendi dal tavolo. Pensavo di poter fare questo semplicemente modificando questo esempio di codice:Come impostare la barra di ricerca di UISearchController su una vista diversa da tableHeaderView o navigationItem.titleview?

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 

L'idea era di prendere qualche altra vista e fare

otherview = searchController.searchBar 

Per esempio uno sbocco di UISearchBar, o una UIView vuota, o qualcosa del genere.

Ma non mostra la barra di ricerca se lo faccio. Sembra funzionare solo come la vista di intestazione di una tabella o come navigationItem.titleView.

Mi manca qualcosa?

+1

Se si dispone di un posto UIView vuota sopra la Tableview, diciamo che si dispone di una presa di corrente a quella UIView vuoto chiamato 'searchContainer' , quindi è possibile aggiungere la barra di ricerca a tale vista da 'searchContainer.addSubview (searchController.searchBar)' –

+0

Esatto! Aggiungi e rispondi e otterrai alcuni punti in più. – Carlos

risposta

19

Se si dispone di un UIView vuoto posizionato sopra la vista tabella.

Supponiamo che tu abbia uno sbocco a tale UIView vuoto chiamato searchContainer. Quindi è possibile aggiungere la barra di ricerca del UISearchController a quella vista aggiungendo la seguente riga

searchContainer.addSubview(searchController.searchBar) 
+0

ha funzionato benissimo per me aggiungere la barra di ricerca nel controller della vista, ma il SearchResultsController non si attiva ogni volta che provo a modificare, solo la prima volta. Ma se uso un oggetto barButtonItem per avviare la barra di ricerca, il searchResultsController e la ricerca effettiva si innesca ogni volta. Mi sto perdendo qualcosa qui? – gadget00

+0

Occasionalmente è necessario impostare il metodo 'viewDidLoad' con' definePresentationContext = true' e 'extendedLayoutIncludesOpaqueBars = true' per evitare alcuni errori di layout. – Leandro

+0

C'è un modo per impostare l'altezza e la larghezza di searchController.searchBar prima/dopo l'aggiunta come sottoview? – coolcool1994