2009-05-02 5 views
1

私はNSTableViewを持っていて、いくつかの列にはデータが入っています。特定の列の内容に基づいて行をフィルタリングできる検索バーを設定するにはどうすればよいですか? FinderのSpotlightやiTunesの検索バーで行われている、メタデータで曲をフィルタリングできる種類のものを探しています。SpotlightやiTunesに似た検索機能はどうやって手に入りますか?

答えて

2

データソースはNSArrayControllerで管理できますか?

2つのstandardのアプローチがあります。最初の(Tiger前の)テクニックは、NSArrayControllerをサブクラス化して、arrangeObjectsをオーバーライドすることです。 2番目(Tiger後)は、NSSearchFieldの述語をNSArrayControllerのfilterPredicateにバインドすることです。どちらの場合でも、ビューのプロパティをコントローラのarrangedObjectキーにバインドします(たとえば、 "name" NSTableColumnをコントローラのarrangedObjects.nameキーにバインドし、NSTableViewのコンテンツをarrangedObjectsにバインドします)。 writing predicatesにお読みください。

+0

NSPredicateを使用するためにバインディングを使用する必要はありません。データソースメソッドを使用してテーブルビューを作成する場合は、プレーンNSArrayオブジェクトでも同様に動作します。 –

3

「Spotlight」機能は、SearchKit APIを使用して実際に提供されますが、NSPredicateのような単純なケースでは、おそらくNSPredicateのほうがよいでしょう。だれかが興味があれば、SearchKitプレゼンテーションをCocoaHeadsに書きました。あなたはtake a look at hereです。