2015-01-29 2 views
0

В моем приложении я хочу, чтобы на панели навигации была кнопка поиска, и когда кнопка нажата, панель поиска должна появиться в панели навигации. Я видел много сообщений по этому вопросу, но почему-то это не работает для меня. Итак, я разместил SearchDisplayController прямо над навигационной панелью. затем в viewDidLoad я назначаю действие кнопке поиска и удаляю строку поиска из супервизора. Как только кнопка нажата, я звоню mapSearchDisplayController.displaysSearchBarInNavigationBar = true, но ничего не происходит. Код выдержки ниже:Добавить searchBar в навигацииБар после просмотраDidLoad?

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 правильно отображается в панели навигации. Как я могу появиться в панели Nav на кнопке? Любая помощь может быть исправлена.

ответ

0

Я создал панель поиска с помощью

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 

Далее укладка и т.д. также может быть сделано, но я только что создали и добавили его кнопка navbar on нажата и удалила ее из супервизора, когда нужно было скрыть ее.