2017-07-10 10 views
1

私は、テーブルビューと検索コントローラを持つviewControllerで検索コントローラを実装しました。検索ボタンがテープに貼られ、検索ボタンがUIBarButtonItemでsearchBarが表示されているときに検索バーが表示されますナビゲーションコントローラではなく、私は上のタップがボタンをキャンセルするときに消えるようにしたい、私はserarchBarDelegateプロトコルを使用して試してみましたが、何もコードここhide searchController searchBarキャンセルボタンがクリックされたとき

class NewsTVController: UIViewController, UITableViewDataSource, UITableViewDelegate,UISearchResultsUpdating,UISearchBarDelegate{ 
let searchController = UISearchController(searchResultsController: nil) 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     searchController.searchResultsUpdater = self 
     definesPresentationContext = true 
     searchController.dimsBackgroundDuringPresentation = false 
     searchController.hidesNavigationBarDuringPresentation = true 

     self.searchController.hidesNavigationBarDuringPresentation = false 

     loadNews() 
    } 


@IBAction func searchButtonTaped(sender:UIBarButtonItem){ 
     print("tap inside") 
     self.navigationItem.titleView = searchController.searchBar 
     //self.navigationItem.rightBarButtonItem?.action = #selector(hideSearchBar(:)) 
     // searchController.searchBar.touchesCancelled(UITouch, with: .touchUpInside){ 

     //} 
     //self.navigationItem.rightBarButtonItem. 
    } 
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { 
     hideSearchBar() 
    } 
    func hideSearchBar() { 
     print("hay que escpder") 
     //navigationItem.setLeftBarButtonItem(searchBarButtonItem, animated: true) 
     //logoImageView.alpha = 0 
     UIView.animate(withDuration: 0.3, animations: { 
      self.navigationItem.titleView = nil// = self.logoImageView 
      self.navigationItem.title = "Eventos" 
      //self.logoImageView.alpha = 1 
     }, completion: { finished in 

     }) 
    } 
} 

検索ボタンとナビゲーションコントローラのPICと、ここでタップに起こりません検索バー enter image description here

私が望むのは、キャンセルボタンがタップされたとき、ナビゲーションバーは最初の写真と同じようにとどまり、検索バーはありません。 といくつかのヒントには、検索バーが表示されたときに戻るボタンと検索ボタンを非表示にする方法があります。私は、NAD検索ボタンをがでをsearchButtonTapedにリンクされているので、機能的である

@IBAction func searchButtonTaped(sender:UIBarButtonItem){ 
     print("tap inside") 
     self.navigationItem.titleView = searchController.searchBar 
     searchController.searchBar.setShowsCancelButton(false, animated: false) 
     self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Cancelar", style: .plain, target: self, action: #selector(hideSearchBar(sender:))) 
     //self.searchIcon.is 
     //self.navigationItem.rightBarButtonItem?.action = #selector(hideSearchBar(:)) 
     // searchController.searchBar.touchesCancelled(UITouch, with: .touchUpInside){ 

     //} 
     //self.navigationItem.rightBarButtonItem. 
    } 
func hideSearchBar(sender:UIBarButtonItem) { 
     print("hay que escpder") 
     self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.search, target: self, action: #selector(searchButtonTaped(sender:))) 
     //logoImageView.alpha = 0 
     UIView.animate(withDuration: 0.3, animations: { 
      self.navigationItem.titleView = nil// = self.logoImageView 

      self.navigationItem.title = "Noticias" 
      //self.logoImageView.alpha = 1 
     }, completion: { finished in 

     }) 
    } 

と検索バーboila

は今、ナビゲーションコントローラから消える私はこの解決策を見つけ、これをachiveするための方法を見つけるドントとして

答えて

0

インタフェースビルダー

関連する問題