私はNSTableViewを持っていて、いくつかの列にはデータが入っています。特定の列の内容に基づいて行をフィルタリングできる検索バーを設定するにはどうすればよいですか? FinderのSpotlightやiTunesの検索バーで行われている、メタデータで曲をフィルタリングできる種類のものを探しています。SpotlightやiTunesに似た検索機能はどうやって手に入りますか?
1
A
答えて
2
データソースはNSArrayControllerで管理できますか?
2つのstandardのアプローチがあります。最初の(Tiger前の)テクニックは、NSArrayControllerをサブクラス化して、arrangeObjectsをオーバーライドすることです。 2番目(Tiger後)は、NSSearchFieldの述語をNSArrayControllerのfilterPredicateにバインドすることです。どちらの場合でも、ビューのプロパティをコントローラのarrangedObject
キーにバインドします(たとえば、 "name" NSTableColumnをコントローラのarrangedObjects.name
キーにバインドし、NSTableViewのコンテンツをarrangedObjects
にバインドします)。 writing predicatesにお読みください。
3
「Spotlight」機能は、SearchKit APIを使用して実際に提供されますが、NSPredicateのような単純なケースでは、おそらくNSPredicateのほうがよいでしょう。だれかが興味があれば、SearchKitプレゼンテーションをCocoaHeadsに書きました。あなたはtake a look at hereです。
NSPredicateを使用するためにバインディングを使用する必要はありません。データソースメソッドを使用してテーブルビューを作成する場合は、プレーンNSArrayオブジェクトでも同様に動作します。 –