ОК, у меня есть свой ответа- [я отправил этот ответ на связанный вопрос] -
Вот шаги, которые работали для меня [содержащих некоторый псевдокода]:
1) Так как вы ищете, вы, безусловно, уже переопределяете ShouldReloadForSearch
- Просто добавьте кусок кода, который сохраняет/сохраняет forSeachString
.
2) Это может варьироваться в зависимости от вашего приложения, но суть этого шага заключается в том, что вам нужно очистить сохраненную строку поиска [установлено в null], если результаты поиска не загружены. Я сделал это в своем UITableViewSource. У меня есть два конструктора: один для полного набора данных, а другой - для фильтра данных [результатов поиска]. Поэтому я просто установил его в null в моем полном конструкторе набора данных. Да, вы могли бы сделать это по-другому, без сомнения, но я так и сделал.
3) Затем сделайте так, как указано в исходном «ответе» и вызовите SetActive - [self.searchDisplayController setActive:NO];
. Они выступали за то, чтобы делать это в переопределении ViewDidAppear. Я этого не делал ... Я сделал это сразу после того, как я нажал следующий UIViewController в моем RowSelected
переопределении.
4) Последнее, в пределах вашего UIViewController, который имеет UISearchDisplayController attached- проверить сохраняемую строку поиска, и если она существует, то сделайте следующее: 1) вызова SetActive снова, но на этот раз с истинным параметром, т.е. setActive:YES
... то 2) установите текст searchBar в сохраненное значение строки поиска. Я сделал это в переопределении ViewWillAppear
.
Длинная история короткая ... это сработало для меня И оно поддерживает результаты поиска. Установка текста searchBar на шаге 4 является ключом ...это эффективно, чтобы фильтр сохранялся.
Надеюсь, что это поможет кому-то