OK, j'ai votre réponse- [J'ai également signalé cette réponse à la question liée] -
Voici les étapes qui ont travaillé pour moi [contenant quelques pseudo-code]:
1) Depuis vous êtes en train de chercher que vous êtes déjà en train de surcharger ShouldReloadForSearch
- Il suffit donc d'ajouter un morceau de code qui enregistre/stocke le forSeachString
.
2) Celui-ci peut varier considérablement en fonction de votre application, mais l'essentiel pour cette étape est que vous devez effacer la chaîne de recherche stockée [définie sur null] si aucun résultat de recherche n'est chargé. Je l'ai fait dans mon UITableViewSource. J'ai 2 constructeurs: un pour l'ensemble de données complet et un autre pour l'ensemble de données filtré [résultats de la recherche]. Donc, je l'ai juste mis à null dans mon constructeur de jeu de données complet. Oui, vous pourriez le faire différemment, sans aucun doute, mais c'est comme ça que je l'ai fait.
3) Ensuite, faites comme l'état "réponse" d'origine et appelez SetActive - [self.searchDisplayController setActive:NO];
. Ils ont préconisé le faire en override de ViewDidAppear. Je n'ai pas fait cela ... Je l'ai fait immédiatement après avoir poussé le suivant UIViewController dans mon override RowSelected
. 4) Enfin, dans votre UIViewController qui a le UISearchDisplayController ci-joint - vérifiez votre chaîne de recherche sauvegardée et si elle existe, faites ce qui suit: 1) appelez encore SetActive MAIS cette fois avec un vrai paramètre, par exemple setActive:YES
... alors 2) définissez le texte searchBar sur votre valeur de chaîne de recherche enregistrée. Je l'ai fait dans le override ViewWillAppear
.
Longue histoire courte ... cela a fonctionné pour moi ET il maintient les résultats de recherche. Définir le texte searchBar à l'étape 4 est la clé ...Cela permet au filtre de persister.
Espérons que cela aide quelqu'un