2015-06-02 15 views
6

Sto provando a trovare un'alternativa a displaysSearchBarInNavigationBar per iOs8, c'è qualcosa che posso usare (in swift)?displaysSearchBarInNavigationBar deprecato in iOS8

Ho provato self.navigationItem.titleView = resultSearchController.searchBar ma non fa nulla.

Non capisco come trovare la sostituzione per le funzioni che sono deprecate, sulla documentazione Apple si dice solo deprecato senza alternative, se avete qualche consiglio sarebbe molto apprezzato.

+0

Prova UISearchBar: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISearchBar_Class/index.html#//apple_ref/c/tdef/UISearchBarStyle – Horatio

+0

sono stato lì, ho don Non vedo nulla che sostituisca displaysSearchBarInNavigationBar –

+0

@KaliAney Io posto una risposta al riguardo in questo http://stackoverflow.com/questions/30226835/displaying-search-bar-in-navigation-bar-in-ios-8/30227166#30227166 –

risposta

8

Si può mettere un UISearchBar in una UINavigationBar senza utilizzare un UINavigationController senza problemi, ma si deve fare solo una piccola modifica, in primo luogo è necessario definire un @IBOutlet al UINavigationItem all'interno del vostro UINavigationBar ma il suo nome deve essere diverso da la navigationItem proprietà definita in tutta la classe UIViewController, vedere il codice seguente:

class ViewController: UIViewController, UISearchControllerDelegate, UISearchResultsUpdating, UISearchBarDelegate { 

    var searchController : UISearchController! 

    @IBOutlet weak var navigationItemBar: UINavigationItem! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.searchController = UISearchController(searchResultsController: nil) 

     self.searchController.searchResultsUpdater = self 
     self.searchController.delegate = self 
     self.searchController.searchBar.delegate = self 

     self.searchController.hidesNavigationBarDuringPresentation = false 
     self.searchController.dimsBackgroundDuringPresentation = true 

     self.navigationItemBar.titleView = searchController.searchBar 

     self.definesPresentationContext = true   
    } 

    func updateSearchResultsForSearchController(searchController: UISearchController) { 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

E poi si può vedere qualcosa di simile nel vostro simulatore:

enter image description here

Spero che questo ti aiuti.

+0

funziona perfettamente, grazie! –

+0

Ho provato esattamente questo su iOS 10 ma alla fine ho una barra di ricerca nel mio elemento di navigazione che non diventa il primo soccorritore. – plaetzchen