Cela doit être trivial, mais je ne vois pas comment vous êtes censé congédier un UISearchController par programme?
Notez que c'est le nouveau UISearchController (introduit en 2014 avec iOS 8), et non le UISearchDisplayController.
Jusqu'ici voici ce que j'ai
// Dismiss the search tableview
searchController.dismissViewControllerAnimated()
// Clear the Search bar text
searchController.active = false
Mais j'ai toujours le bouton d'annulation et je ne peux pas m'en débarrasser.
OK, après plusieurs tests, il vous suffit de définir:
searchController.active = false
// or Swift 4+
searchController.isActive = false
C'est la première chose que j'ai essayée, mais je l'ai appelée dans l'une des méthodes UISearchControllerDelegate qui ne fonctionnait pas (j'aurais probablement dû l'appeler avec dispatch_async (la réponse de halbano semble le confirmer)).
Quoi qu'il en soit, comme je ne trouvais pas cette réponse en ligne, je répondais à ma propre question et j'espère que cela aidera quelqu'un.
Avez-vous eu ce problème lorsque vous essayez de renvoyer le contrôleur de recherche après être passé à une autre vue? J'ai rencontré ce problème aussi. Je pense que vous voudrez peut-être utiliser
self.definesPresentationContext = true
dans le contrôleur de vue qui présente UISearchController conformément à cet article ISearchController n'est pas rejeté lorsque View est activé . Ça marche pour moi.
Je présentais la mine intégrée dans une barre de navigation. Le code qui fonctionne pour moi était:
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar{
dispatch_async(dispatch_get_main_queue(), ^{
[self.searchController setActive:NO];
self.navigationController.navigationBar.topItem.title = @"MYTITLE".uppercaseString;
self.navigationItem.titleView = nil;
});
}
J'espère que ça aide quelqu'un.
Swift 4+
searchController.isActive = false
J'ai eu ce problème en utilisant la recherche et interactionController, résolu après simplement inclure la ligne: self.dismissViewControllerAnimated (false, complétion: nil)
Ouvrez l'interaction et effacez la recherche sans modifier le délégué.