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