![](/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.