Dans xcode 9, lorsque je mets la barre de recherche en vue, il déplace automatiquement le reste de l'interface utilisateur. Lorsque j'essaie de supprimer la barre de recherche de la vue, j'obtiens un espace noir au lieu de corriger l'interface utilisateur. La ligne que j'utilise est la suivante: self.navigationItem.searchController = nil. J'ai essayé beaucoup de choses, mais je ne sais pas comment corriger l'interface utilisateur après la suppression de la barre de recherche. Ce n’est que lorsque je passe à un autre contrôleur de vue et que je retourne que l’UI est à nouveau correcte sans la barre de recherche. Qu'est-ce que j'oublie ici?
code:
@IBAction func searchIconPressed(_ sender: UIBarButtonItem) {
//ios 11
if #available(iOS 11.0, *) {
if self.navigationItem.searchController == nil {
self.navigationItem.searchController = self.searchController
self.searchController.isActive = true
}
else {
self.navigationItem.searchController?.isActive = false
self.navigationItem.searchController = nil
}
}
//when ios 9-10
else {
if self.navigationItem.titleView == nil {
self.navigationItem.titleView = self.searchController.searchBar
self.searchController.isActive = true
}
else {
self.navigationItem.titleView = nil
}
}
}
}
La solution pour supprimer la barre de recherche de la vue et faire remonter l'interface utilisateur:
self.navigationItem.searchController?.isActive = false
let search = UISearchController(searchResultsController: nil)
self.navigationItem.searchController = search
self.navigationItem.searchController = nil
Et ici pour l'Objectif C
[self.navigationItem.searchController setActive:NO];
UISearchController *nilSearch = [[UISearchController alloc] initWithSearchResultsController:nil];
self.navigationItem.searchController = nilSearch;
self.navigationItem.searchController = nil;