簡體   English   中英

在viewDidLoad之后在NavigationBar中添加searchBar?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM