2016-08-02 10 views
2

検索バーに問題があります。私は右隅に検索ボタンを備えたテーブルビューを作成する必要があり、クリックすると検索バーが表示されます。アクションバー(バーアイテム)を表示する

// Search controller 
searchController = ({ 
    let controller = UISearchController(searchResultsController: nil) 
    controller.delegate = self 
    controller.searchBar.delegate = self 
    controller.searchResultsUpdater = self 
    controller.dimsBackgroundDuringPresentation = false   
    controller.hidesNavigationBarDuringPresentation = true 
    controller.searchBar.sizeToFit() 
    return controller 
})() 

そして、ここでのアクションです:

私のコードはここにある、私はボタンをクリックすると、何も起こらない

// Search action 
@IBAction func search(sender: UIBarButtonItem) { 
    print("Open search") 
    searchController.active = true 
    if searchController.searchBar.isFirstResponder() == false { 
     searchController.searchBar.becomeFirstResponder() 
    } 
} 

(のみコンソール内のテキストを印刷し)、そして私が欲しいのです下の画像で:

Show search

あなたのクラスが準拠する必要が

答えて

8

UISearchBarDelegate、あなたがすでにそれをしているかどうかはわかりません。

UISearchBarDelegateプロトコルを使用すると、UISearchBar制御を機能させるために実装するオプションのメソッドを定義します。また、あなたがAppleのドキュメントからの検索ビュー

を提示してください。 UISearchBarオブジェクトは、バーの検索フィールドのユーザーインターフェイスを提供しますが、ボタンがタップされたときにアクションを実装するのはアプリケーションの責任です。テキストフィールドにテキストが入力されると、少なくとも、代理人は実際の検索を実行する必要があります。

ここに私のアプリ

@IBAction func searchAction(sender: UIBarButtonItem) { 
    // Create the search controller and specify that it should present its results in this same view   
    searchController = UISearchController(searchResultsController: nil) 

    // Set any properties (in this case, don't hide the nav bar and don't show the emoji keyboard option) 
    searchController.hidesNavigationBarDuringPresentation = false 
    searchController.searchBar.keyboardType = UIKeyboardType.ASCIICapable 

    // Make this class the delegate and present the search 
    self.searchController.searchBar.delegate = self 
    presentViewController(searchController, animated: true, completion: nil) 
} 
からのサンプルです
関連する問題