繁体   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