2

我有一個UISearchDisplayController,可以在我的iOS6應用程序中完美工作。現在,我想將此應用遷移到iOS7。iOS7:如何設置UISearchDisplayController的navigationItem屬性?

我讀了蘋果的文檔,它說以下內容:

Starting in iOS 7.0, you can use a search display 
controller with a navigation bar (an instance of 
the UINavigationBar class) by configuring the 
search display controller’s displaysSearchBarInNavigationBar 
and navigationItem properties. 

displaysSearchBarInNavigationBar是很容易成立。但唯一的線索,我有導航項目如下:

Important: The system raises an exception if you 
attempt to set the titleView property for a search 
display controller’s navigation item. 

我似乎無法找到如何設置navigationItem的示例。我如何說我的導航欄嵌入我的searchBar?有人可以給我看一個例子嗎?

預先感謝您!

回答

4

UISearchDisplayController創建並管理在導航欄中顯示搜索欄所需的導航項目。你不需要創建自己的,雖然可以displaysSearchBarInNavigationBar已設置爲YES(navigationItem被延後創建)

當使用搜索顯示控制器的視圖控制器詢問後通過searchDisplayController.navigationItem訪問其navigationItem,搜索顯示控制器將返回其項目(其中包含搜索欄),而不是視圖控制器。

+0

謝謝你的時間!但是肯定有一些我沒有得到的,因爲它看起來並不像你描述的那樣容易。從我的工作ios6代碼,除了刪除我的UISearchBar和設置displaysSearchBarInNavigationBar爲true,我需要其他代碼段?例如,我是否需要手動將延遲創建的搜索欄放在導航欄中,還是全部是魔術?先謝謝你! – NLemay

+0

導航控制器將詢問最上方的視圖控制器的導航項目。如果該視圖控制器具有搜索顯示控制器並且「displaysSearchBarInNavigationBar」爲YES,那麼我們使用來自搜索顯示控制器的啓用搜索欄的導航欄。而且您不想刪除搜索欄,只需將其從層次結構中刪除即可......欄仍然需要存在。 – MyztikJenz

+0

如果您仍然遇到問題,使用小型測試案例(並在此處發佈雷達編號)提交bug會很有幫助。 – MyztikJenz