2009-05-02 4 views
1

Ich habe eine NSTableView, die ein paar Spalten enthält, die mit Daten gefüllt sind. Wie richte ich eine Suchleiste ein, die die Zeilen basierend auf dem Inhalt einer bestimmten Spalte filtern kann? Ich suche nach der Art der Sache, die mit Spotlight im Finder oder der Suchleiste in iTunes durchgeführt wird, die Songs nach Metadaten filtern kann.Wie erhalten Sie ähnliche Suchfunktionen wie Spotlight oder iTunes?

Antwort

2

Kann Ihre Datenquelle von NSArrayController verwaltet werden?

Es gibt 2 standard Ansätze. Die erste Technik (vor dem Tiger) besteht darin, NSArrayController abzuleiten und arrangeObjects zu überschreiben. Der zweite (Post-Tiger) soll die Prädikate von NSSearchField an das FilterPredicate des NSArrayControllers binden. In beiden Fällen binden Sie Ihre Ansichtseigenschaften an den Schlüssel arrangedObject des Controllers (binden Sie z. B. den "Name" NSTableColumn an ​​den Schlüssel arrangedObjects.name des Controllers und binden Sie den Inhalt des NSTableView an arrangedObjects). Vielleicht möchten Sie auf writing predicates nachlesen.

+0

Denken Sie daran, dass Sie keine Bindungen verwenden müssen, um NSPredicate zu verwenden. Es funktioniert genauso gut für ein einfaches NSArray-Objekt, wenn Sie Datenquellenmethoden verwenden, um Ihre Tabellenansicht zu füllen. –

3

"Spotlight" -Fähigkeit wird Ihnen tatsächlich mit der SearchKit API gegeben, obwohl für einen einfachen Fall wie das, was Sie beschreiben, wäre wahrscheinlich NSPredicate eine bessere Wahl. Wenn jemand interessiert ist, schrieb ich eine SearchKit-Präsentation für CocoaHeads, die Sie take a look at here.

Verwandte Themen