iOS 9 barre de recherche disparaît de la table d'en-tête de la vue quand UISearchController est active
La structure:
Vue1 (cliquez sur un bouton) -> présenter modal (MyModalView: UITableViewController)
MyModalView a UISearchController intégré. La barre de recherche de UISearchController est placé dans MyModalView.tableView.tableHeaderView.
Elle fonctionne très bien depuis iOS 8.0. Cependant sur iOS 9, la barre de recherche disparaissent lorsque le UISearchController est active. Veuillez jeter un oeil à ces quelques images ci-dessous
Modale de vue:
UISearchController active sur iOS 8:
UISearchController active sur iOS 9:
La très standard code:
override func viewDidLoad() {
super.viewDidLoad()
//Dynamically create a search controller using anonymous function
self.resultSearchController = ({
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.sizeToFit()
controller.searchBar.delegate = self
self.tableView.tableHeaderView = controller.searchBar
return controller
})()
//Auto sizing row & cell height
self.tableView.estimatedRowHeight = 130
self.tableView.rowHeight = UITableViewAutomaticDimension
self.definesPresentationContext = true
//No footer for better presentation
self.tableView.tableFooterView = UIView.init(frame: CGRectZero)
}
Ce problème se produit également dans iOS 9.1 bêta...
Toute idée /pointeur serait grandement apprécié
Acclamations.
- Pour moi, cela se produit uniquement sur l'appareil (pas dans le Simulateur).
- Salut @IanDundas j'ai posté ma réponse ci-dessous avez-vous envie de l'essayer pour voir si ça va résoudre votre problème?
- oui, en fait, @Shwethascar de la fixation de la chance - merci bien. Juste l'ajout d'un contexte pour les autres, qu'il ne se passe pour moi sur le périphérique.
- Essayez searchController.hidesNavigationBarDuringPresentation = false
InformationsquelleAutor David Trang | 2015-09-21
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas quel est exactement le problème mais je "fixe" par:
Ma conjecture est que
UISearchController
est en train de faire quelque chose de funky quand il essaie de se présenter comme une barre de navigation. Donc, c'est un hack, mais elle au moins ne pas bloquer l'utilisateur. La barre de recherche de ne pas faire les frais d'animation et de cacher la barre de navigation.searchController.hidesNavigationBarDuringPresentation = false
(swift)Il semble tous d'entre nous ont eu le même problème, mais ils ont été résolus de différentes manières. Cependant aucune des réponses proposées fonctionné pour moi :(. Néanmoins je vous remercie tous pour votre temps.
J'ai une solution qui a résolu mon problème. C'est l'établissement d'Étendre les Bords - Sous Opaque Bars de mon (MyModalView: UITableViewController) à true dans le plan de montage à l'aide de Interface Builder.
En résumé:
MyModalView: UITableViewController, dans le Storyboard à l'aide de Interface Builder a
Étendre Les Bords:
- Sous les Barres du Haut cochée
- En Bas des Barres cochée
- En vertu de l'Opaque Bars cochée
J'ai trouvé c'est de la simulation les paramètres (barre du haut) dans la table de montage que la cause de ce problème.
Dans mon cas, les lignes suivantes de travail, mais je ne sais toujours pas pourquoi.
searchController.searchBar.searchBarStyle = .default
danswillPresent
et.minimal
danswillDismiss
aidé pour moi.J'ai dû
J'ai trouvé une question similaire ici mais dans mon cas, il n'était pas sur la méthode viewDidLoad. J'ai dû essayer différents points de vue jusqu'à ce qu'il a travaillé. Maintenant, je peux avoir à la fois une barre de navigation personnalisée de la couleur et de la barre de recherche,
Merci @ruses de duan et @Techprimate
Dans mon cas, j'ai résolu ce problème en définissant:
Et de mettre en œuvre les 2 méthodes suivantes dans UISearchControllerDelegate
Je l'ai corrigé dans mon cas, par la suppression de
definesPresentationContext = true
Je n'ai pas fait de test encore si il y a tous les inconvénients de la suppression de ce!
Je n'ai pas de barre de navigation dans ce lieu d'une application. Aucun des autres postes m'ont aidé, j'ai donc résolu de cette façon:
J'ai eu le même problème, et quand j'ai débogué l'INTERFACE utilisateur sur Xcode, j'ai trouvé que le
UISearchBar
point de vue a été déplacé à un autre point de vue et la largeur a été remis à zéro.J'ai corrigé par la mise en
definesPresentationContext
propriété de laUISearchController
àfalse
, ettrue
pour le contenantUITableViewController
.J'ai ajouté une seule ligne à votre
viewDidLoad()
.Réglage de la navigationBar en permanence à translucide dans storyboard résolu mon problème.
Il fonctionne
Si vous voulez vous cacher la barre de navigation et de recherche présente contrôleur en mode plein écran, définissez les éléments suivants sur votre barre de navigation et la barre de recherche ne dissapper:
fait le truc pour moi
N'a pas fonctionné pour moi, j'ai fixé à l'aide de ce hack