Добавить searchBar в навигационную панель после 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
}
Если я позвоню displaysSearchBarInNavigationBar = true
в viewDidLoad
затем searchBar
правильно отображается в панели навигации. Как сделать так, чтобы в панели навигации отображалось нажатие кнопки? Любая помощь оценивается.
1 ответ
Я создал панель поиска, используя
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
Дальнейшее оформление и т. Д. Также может быть выполнено, но я просто создал и добавил его в панель навигации при нажатой кнопке и удалил из суперпредставления, когда его нужно было скрыть.