2016-08-04 22 views
0

Ich habe 3 Navigationsleiste Einzelteile in meinem navigationBar wie so:ausgeblendet Navigationsleiste Gegenstände bei der Such

func setupNavBarButtons() { 
    let searchImage = UIImage(named: "search_icon")?.imageWithRenderingMode(.AlwaysOriginal) 
    let searchBarButtonItem = UIBarButtonItem(image: searchImage, style: .Plain, target: self, action: #selector(handleSearch)) 

    let mapBarButtonItem = UIBarButtonItem(title: "Map", style: .Plain, target: self, action: #selector(displayMap)) 
    navigationItem.rightBarButtonItems = [mapBarButtonItem , searchBarButtonItem] 

    let filterBarButtonItem = UIBarButtonItem(title: "Filter", style: .Plain , target: self, action: #selector(displayFilter)) 
    navigationItem.leftBarButtonItem = filterBarButtonItem 
} 

Wenn ich das Suchsymbol tippe Sie ruft die Funktion unter:

func handleSearch() { 
    self.navigationItem.titleView = searchController.searchBar   
} 

Ich mag verstecken Sie alle navigationBarItems, während Benutzer sucht und dann nav Stabeinzelteile zurückbringt, sobald Benutzer erfolgt,

Antwort

1

Sie können so in Ihrem handleSearch Verfahren versuchen, das l zu entfernen eft und rechts bar knopf artikel, Danach auf searchBarCancelButtonClicked methode von UISearchBarDelegate können Sie es wieder, dass bar einzelteile.

func handleSearch() { 
    searchController.searchBar.hidden = false 
    self.navigationItem.titleView = searchController.searchBar 
    searchController.searchBar.becomeFirstResponder() 
    navigationItem.rightBarButtonItems = nil 
    navigationItem.leftBarButtonItems = nil 
} 

func searchBarCancelButtonClicked(searchBar: UISearchBar) { 
    self.setupNavBarButtons() 
    searchController.searchBar.hidden = true 
} 
func handleSearch() { 
    searchController.searchBar.hidden = false 
    self.navigationItem.titleView = searchController.searchBar 
    searchController.searchBar.becomeFirstResponder() 
    navigationItem.rightBarButtonItems = nil 
    navigationItem.leftBarButtonItems = nil 
} 

func searchBarCancelButtonClicked(searchBar: UISearchBar) { 
    self.setupNavBarButtons() 
    searchController.searchBar.hidden = true 
} 
+0

Wie kann ich es dem Benutzer ermöglichen, sofort mit der Eingabe zu beginnen, anstatt auf das Suchsymbol zu klicken und dann auf die Suchleiste zu tippen? – luke

+0

Überprüfen Sie meine Bearbeitung für werden Ersthelfer –

+0

perfekt danke – luke