ОК, я получил ваш ответ-
Вот шаги, которые сработали для меня [содержащие некоторый псевдокод]:
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 является ключевым моментом ... это эффективно заставляет фильтр сохраняться.
Надеюсь, это кому-то поможет