![](/img/trans.png)
[英]How to add NavigationBar (without NavigationController) and SearchBar to a TableView
[英]Add searchBar in navigationBar after viewDidLoad?
在我的應用程序中,我希望導航欄中有一個搜索按鈕,當按下按鈕時,搜索欄應出現在導航欄中。 我已經看過很多關於該主題的帖子,但是不知怎么對我不起作用。 因此,我在導航欄下方放置了一個SearchDisplayController
。 然后在viewDidLoad
,將操作分配給搜索按鈕,並從超級視圖中刪除搜索欄。 單擊按鈕后,我正在調用mapSearchDisplayController.displaysSearchBarInNavigationBar = true
,但是什么也沒發生。 下面的代碼摘錄:
override func viewDidLoad() {
super.viewDidLoad()
banner.delegate = self
// Add button to navbar
var filterButton : UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Organize, target: self, action: nil)
self.navigationItem.leftBarButtonItem = filterButton
var aboutButton : UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Add, target: self, action: "aboutAction")
var searchButton : UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Search, target: self, action: "searchAction")
var rButtons : [UIBarButtonItem] = [aboutButton, searchButton]
self.navigationItem.rightBarButtonItems = rButtons
// Deal with Search Display Controller
self.mapSearchDisplayController.delegate = self.mapSearchDisplayController;
self.mapSearchDisplayController.searchResultsDataSource = self.mapSearchDisplayController;
self.mapSearchDisplayController.searchResultsDelegate = self.mapSearchDisplayController;
self.mapSearchDisplayController.searchBar.removeFromSuperview();
}
func searchAction(){
println("Search action")
mapSearchDisplayController.displaysSearchBarInNavigationBar = true
}
如果我在viewDidLoad
調用displaysSearchBarInNavigationBar = true
,則searchBar
正確顯示在導航欄中。 如何使我在按下按鈕時顯示在導航欄中? 任何幫助表示贊賞。
我使用創建了一個搜索欄
let searchBar = UISearchBar(frame : CGRect(0, 0, self.navigationController?.navigationBar.frame.size.width)! * 0.9, 0)
self.searchBar.placeholder = "Search"
self.searchBar.delegate = self
然后將其添加到導航欄中,如下所示:
self.navigationItem.titleView = self.searchBar
還可以進行其他樣式設置,但我只是在將按鈕隱藏時將其創建並添加到導航欄中,並從超級視圖中將其刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.