2015-11-18 4 views
1

У меня есть SearchBar в моей навигационной панели. Когда нажимается SearchBar, он должен показывать над кнопкой «Назад» на панели навигации.Скрыть кнопку «Назад» при поискеБар используется

Link to what I want to achieve

Так что я хочу, чтобы скрыть кнопку назад, как на картинке выше, но я не достижение, что Searchbar перекрывает кнопку назад. Может кто-нибудь, пожалуйста, помогите

Вот мой код:

class FirstSearchTableViewController: UITableViewController, UISearchResultsUpdating { 


let searchData = [] 
var filteredSearchData = [String]() 
var resultSearchController = UISearchController() 


override func viewDidLoad() { 
    super.viewDidLoad() 

    self.resultSearchController = ({ 
     let controller = UISearchController(searchResultsController: nil) 
     controller.searchResultsUpdater = self 
     controller.dimsBackgroundDuringPresentation = false 
     controller.searchBar.placeholder = "Search for persons" 
     controller.searchBar.sizeToFit() 
     controller.searchBar.searchBarStyle = UISearchBarStyle.Minimal 
     controller.searchBar.setValue("X", forKey: "_cancelButtonText") 

     (UIBarButtonItem.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self])).tintColor = UIColor.grayColor() 


     self.navigationItem.titleView = controller.searchBar 

     controller.hidesNavigationBarDuringPresentation = false 


     return controller 
    })() 

    // Reload the table 
    self.tableView.reloadData() 


    self.tableView.backgroundColor = UIColor(red: 14/255.0, green: 23/255.0, blue: 38/255.0, alpha: 1) 

    self.tableView.separatorColor = UIColor(red: 60/255.0, green: 69/255.0, blue: 83/255.0, alpha: 1) 

    self.tableView.rowHeight = 80.0 

    self.navigationController?.navigationBar.topItem?.title = "" 
} 

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    // 1 
    // Return the number of sections. 
    return 1 
} 

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    // 2 
    if (self.resultSearchController.active) { 
     return self.filteredSearchData.count 
    } 
    else { 
     return self.searchData.count 
    } 
} 


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) 

    // 3 
    if (self.resultSearchController.active) { 
     cell.textLabel?.text = filteredSearchData[indexPath.row] 

     return cell 
    } 
    else { 
     cell.textLabel?.text = searchData[indexPath.row] as? String 

     return cell 
    } 
} 


func updateSearchResultsForSearchController(searchController: UISearchController) 
{ 
    filteredSearchData.removeAll(keepCapacity: false) 

    let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text!) 
    let array = (searchData as NSArray).filteredArrayUsingPredicate(searchPredicate) 
    filteredSearchData = array as! [String] 

    self.tableView.reloadData() 
} 

} 
+0

как получается вести себя в настоящее время чернилами? – Alok

ответ

1

я думаю, что это делегат может помочь вам:

func searchBarTextDidBeginEditing(searchBar: UISearchBar) { 
self.navigationItem.setHidesBackButton(true, animated:true); 
} 


func searchBarCancelButtonClicked(searchBar: UISearchBar) { 
self.navigationItem.setHidesBackButton(false, animated:true); 
} 

ссылку ответ может дать вам указатель see implementation of above methods in link aanswer

+0

Большое спасибо! Ссылка мне очень помогла. Теперь это работает для меня – devtimg

Смежные вопросы