回答
爲了把搜索欄到的導航欄的中心:
self.navigationItem.titleView = self.searchBarTop;
爲了把搜索欄的左/右側的導航欄的:
UIBarButtonItem *searchBarItem = [[UIBarButtonItem alloc] initWithCustomView:searchBar];
self.navigationItem.rightBarButtonItem = searchBarItem;
作爲的iOS 7中,UISearchDisplayController默認支持此。設置UISearchDisplayController的displaysSearchBarInNavigationBar = YES
可以很容易地工作。
每文檔:
中的iOS 7.0開始,您可以通過配置搜索顯示控制器的displaysSearchBarInNavigationBar和navigationItem屬性使用了導航欄(UINavigationBar的類的實例)的搜索顯示控制器。
根據Apple的文檔,它看起來像我們不能在titleView中設置searchBar。我對嗎?你能告訴我們如何設置searchDisplayController的navigationItem嗎?謝謝 – NLemay 2013-09-24 18:01:38
我試過了,但我的搜索欄位於屏幕中間! – 2013-10-05 16:49:33
使用故事板時最簡單的方法是將「搜索欄」和「搜索顯示控制器」從實用工具區拖出到文檔大綱內的當前場景的底部。之後,在viewdidload中添加'self.searchDisplayController.displaysSearchBarInNavigationBar = YES;'。您可能想要在編輯時顯示取消按鈕或隱藏後退按鈕,這可以在委託實施中完成。 – Bohrnsen 2013-10-06 19:59:58
正如一位評論者指出的那樣,使用searchDisplayController.displaysSearchBarInNavigationBar = true
最終會隱藏任何現有的左/右欄按鈕項目。
我發現了使用iOS7的searchDisplayController
的新屬性將searchBar
添加到navigationBar
的兩種不同方法。
1)根據筆尖方法
如果您使用的是的.xib,你可以爲這個值,不管出於什麼原因,在leftBarButtonItem停留在機智設置一個用戶定義的運行屬性。我沒有用rightBarButtonItem測試過它。
2)代碼(定時事項)
如果你想在代碼來實現,時間似乎無關緊要。看起來您必須先將searchBar
添加到navigationBar
,然後設置您的barButtonItem
。
- (void)viewDidLoad
{
...
self.searchDisplayController.displaysSearchBarInNavigationBar = true;
self.navigationItem.leftBarButtonItem = [UIBarButtonItem new];
...
}
我試過(1)故事板,它崩潰。這個類不是關鍵的值,它們是關鍵字displaysSearchBarInNavigationBar。 – 2014-03-13 01:19:36
您可以在StoryBoard中執行此操作,但需要將其設置在搜索顯示控制器上,而不是視圖控制器上;然而,它並沒有在我的測試中保留正確的按鈕項,但它確實將搜索欄放在了導航欄中。 – Peter 2014-04-15 20:49:16
您可以在StoryBoard中設置具有引用插座的UIBarButtonItems中使用#2。而不是上面的[UIBarButtonItem new]:'''self.navigationItem.leftBarButtonItem = self.leftButton'''(其中self.leftButton是左按鈕的出口)。 – Peter 2014-04-15 20:53:04
查看Apple的UICatalog示例代碼。它以三種不同的方式顯示如何使用新的UISearchController
:模式,導航欄和導航欄下方。
這些樣本幫了我很多。謝謝! – 2017-07-06 10:35:16
- 1. UISearchBar以上導航欄
- 2. iOS 11導航欄中的UISearchBar
- 3. 側欄導航改爲導航欄中的頂部導航欄
- 4. 導航欄上方的導航欄
- 5. 的UISearchBar出屏幕邊界時導航欄半透明=假
- 6. 在導航欄中的iPhone導航
- 7. 導航欄中的物品從導航欄中消失
- 8. Bootstrap導航欄:導航欄 - 右
- 9. 居中導航欄
- 10. UISearchBar在導航欄下方,如何使它不在活動時將導航欄向上推?
- 11. Bootstrap導航欄(隨頂欄)錨標籤導航導航欄後面的內容
- 12. 添加導航抽屜通過替換在導航欄中的導航欄
- 13. Lone導航欄高度與導航控制器中的導航欄高度
- 14. 如何使導航欄像Pulse中的導航欄?
- 15. 如何定位導航欄中的導航欄內容4
- 16. 無法切換導航欄4中的導航欄
- 17. 導航欄中嵌入的UISearchController的UISearchBar:不成爲第一響應者
- 18. UIPopover中的導航欄
- 19. 導航欄中的錯誤?
- 20. Uisplitviewcontroller導航欄
- 21. Django導航欄
- 22. TTThumbView +導航欄
- 23. AngularJS:導航欄
- 24. 在導航欄
- 25. animate導航欄
- 26. 導航欄Android
- 27. 在導航欄
- 28. Bootstrap導航欄
- 29. Bootstrap導航欄
- 30. 導航欄中的多個搜索欄
我有這樣的問題,在iPad上,結果顯示在嵌入在彈出窗口中的表視圖中,而不是原始表視圖的框架中。任何解決方案? – Norbert 2013-10-05 08:57:01
如果我這樣設置,searchDisplayController不再顯示。 'cellForRowAtIndexPath:'方法也不被調用。 使用'searchDisplayController.displaysSearchBarInNavigationBar'工作,但我無法使用它,因爲我也支持iOS 6 ... – jdev 2015-03-02 22:57:09
此方法隱藏標題 – Panos 2016-11-08 18:20:29