2016-10-06 4 views
0

私はSwiftで新しく、検索バーとUISearchBarDelegateで関連付けられたメソッドを使用して、1つのコントローラに用語集を使用してアプリケーションを開発します。私は他のコントローラーと全く同じメソッドを使用したいと思います。Swiftのアプリケーション全体で同じ検索方法を使用します

私はすでに用語集データをシングルトンに入れましたが、すべてのメソッドをコピーせずに検索メソッドを使用する方法はありますか。他のコントローラをGlossaryControllerから継承させることはできますか?しかし、プロトコルについてはどうですか?

+0

Tableviewはあなたのデータのみを表示しています。あなたが何かを検索している間、あなたはtableviewのための配列(データソース)を作成する必要があります。したがって、1の代わりに使用するテーブルビューの数を使用することは悪い考えです。他の方法では、配列を分割して各パーツを独自のテーブルビューに送信する必要があります。 – Joe

+0

私は同じテーブルビューではなく、アンドロイドのような "オートコンプリートテキストビュー"のような結果を表示したくありません。結果は、研究が始まるときにのみ表示されます。それはうまく動作します。私は、検索バーの代理人から必要なすべてのメソッドをコピーしないようにしたいだけです。 –

+0

あなたのプロジェクトで使用しているテーブルビューの数を教えてください – Joe

答えて

0

新しい迅速なファイルを作成してそこにメソッドを配置することができます。その後、あなたはあなたが持っている他のファイルからアクセスすることができます...

+0

私は、しかし、私はそれが検索デリゲートのメソッドでも機能するかどうか疑問に思う。 –

+0

@FlorentBretonあなたは何とかオーバーライドする検索デリゲートメソッドを作ることを意味するのだろうか? –

0

@Sotiris: 正確に。私のコントローラはUISearchBarDelegateを実装するとして、私は

// MARK: - Search Bar delegate 
func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) { } 

func searchBarTextDidEndEditing(_ searchBar: UISearchBar) { } 

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { } 

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { } 

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {} 

のように、検索代理人からいくつかのメソッドをオーバーライドし、彼らはこの方法(またはそれらの一部)をオーバーライドする必要があります。 デリゲートを実装するクラスを作成してこれらのメソッドをオーバーライドする場合、UISearchBarDelegateを実装する必要がなくても、コントローラでこの新しいクラスを呼び出すことはできますか。

関連する問題