2016-04-14 1 views
0

configurer un contrôleur de recherche dans un contrôleur de vue:barre de recherche réutilisée ViewController ne répond pas après Segue

searchController = UISearchController(searchResultsController: nil) 
searchController.searchResultsUpdater = self 
searchController.dimsBackgroundDuringPresentation = false 
searchController.searchBar.placeholder = getLocalizedString("searchByName") 
searchController.searchBar.setValue(getLocalizedString("cancel"), forKey:"_cancelButtonText") 
searchController.searchBar.delegate = self 
searchController.hidesNavigationBarDuringPresentation = false 
searchController.searchBar.showsCancelButton = true 
searchController.searchBar.sizeToFit() 

Puis, quand un bouton de recherche dans la barre de navigation est cliqué, je vous présente la barre de recherche dans la barre de navigation de TitreView:

self.navigationItem.setHidesBackButton(true, animated: true) 
self.navigationItem.rightBarButtonItem = nil 
self.navigationItem.leftBarButtonItem = nil 

self.navigationItem.titleView = searchController.searchBar 

searchController.searchBar.becomeFirstResponder() 

Lorsque j'utilise ce contrôleur de vue en tant qu'élément de la barre d'onglets, la barre de recherche fonctionne comme prévu.

Je réutilise également le contrôleur de vue avec un segue d'un autre contrôleur de vue qui a également un contrôleur de recherche. Une fois le segue effectué, et je clique sur le bouton de recherche, la barre de recherche est présentée mais ne répond pas aux clics ou à quoi que ce soit.

Mise à jour

Je viens de comprendre c'est parce que je suis en utilisant:

self.definesPresentationContext = true 

Toute idée pourquoi? J'en ai besoin parce que sinon l'écran est noirci si je me déplace entre les onglets.

Merci.

Répondre

1

Pour les personnes qui cherchaient une réponse, j'ai pu la corriger en réglant definesPresentationContext sur false dans la méthode prepareForSegue.

Aussi pour éviter un écran noir lorsque l'utilisateur se renomme, je le remet également à viewWillAppear.