web-dev-qa-db-fra.com

Comment supprimer la barre de recherche iOS 11 de la vue et mettre à jour l'interface utilisateur

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
        }
    }
}

}

8

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
4

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;
1
Herbert Bay