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