OK,我有你的答案 -
這裏是爲我工作的步驟[含有一些僞]:
1)既然你正在尋找你肯定已經覆蓋ShouldReloadForSearch
- 所以,只需添加一塊保存/存儲forSeachString
的代碼即可。
2)這可能會有所不同,取決於您的應用程序 - 但這一步的要點是,如果沒有搜索結果加載,您需要清除存儲的搜索字符串[設置爲空]。我在我的UITableViewSource中做了這個。我有2個構造函數 - 一個用於整個數據集,另一個用於篩選的[搜索結果]數據集。所以我在我的完整數據集構造函數中將其設置爲null。是的,你可以以不同的方式做到這一點,但這就是我做到的。
3)接下來,按原來的「答案」狀態,並打電話給SetActive - [self.searchDisplayController setActive:NO];
。他們主張通過覆蓋ViewDidAppear來做到這一點。我沒有那樣做......我在我的RowSelected
覆蓋中推入下一個UIViewController後立即執行此操作。 4)最後,在UISearchDisplayController附件的UIViewController中檢查你保存的搜索字符串,如果它存在,然後執行以下操作:1)再次調用SetActive,但這次使用真實參數,例如setActive:YES
...然後2)將searchBar文本設置爲您保存的搜索字符串值。我在ViewWillAppear
覆蓋中做了這個。
長話短說...這工作對我來說,它維護搜索結果。在步驟4中設置searchBar文本是關鍵......這有效地讓過濾器保持。
希望這可以幫助別人
那麼這裏有很多因素。你如何構建搜索?你如何處理搜索結果?你對didSelectRowAtIndexPath方法做了什麼特別的事情?請張貼一些代碼(前一個幫助中的屏幕截圖,但不提供足夠的信息)。 – MishieMoo 2010-09-15 20:06:43