OK、あなたの答えがあります-[リンクされた質問にもこの答えを投稿しました]-
これが私のために働いたステップです[いくつかの擬似コードを含みます]:
1)検索しているので、間違いなくすでにオーバーライドしていますShouldReloadForSearch
-したがって、を保存/保存するコードを追加するだけforSeachString
です。
2)これはアプリによってかなり異なる場合がありますが、この手順の要点は、検索結果が読み込まれない場合は、保存されている検索文字列[nullに設定]をクリアする必要があるということです。UITableViewSourceでこれを行いました。2つのコンストラクターがあります。1つは完全なデータセット用で、もう1つはフィルター処理された[検索結果]データセット用です。そのため、完全なデータセットコンストラクターでnullに設定しました。ええ、あなたは間違いなく別の方法でそれを行うことができますが、それは私がそれをした方法です。
3)次に、元の「回答」の状態に従って実行し、SetActive-を呼び出します[self.searchDisplayController setActive:NO];
。彼らは、ViewDidAppearをオーバーライドしてそれを行うことを提唱しました。私はそれをしませんでした...オーバーライドで次のUIViewControllerをプッシュした直後にこれを行いましたRowSelected
。
4)最後に、UISearchDisplayControllerが接続されているUIViewController内で、保存されている検索文字列を確認し、存在する場合は次の手順を実行しますsetActive:YES
。保存した検索文字列値へのテキスト。私はこれをViewWillAppear
オーバーライドで行いました。
簡単に言えば...これは私にとってはうまくいき、検索結果を維持します。手順4でsearchBarテキストを設定することが重要です...これにより、フィルターが効果的に持続します。
これが誰かに役立つことを願っています