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
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.
"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.
- 1. Wie man benutzerdefinierte Suchfunktionen macht
- 2. "Spotlight" wie Komponente für Swing?
- 3. Maven Website + Suchfunktionen
- 4. So verwenden Sie iTunes wie Bildlaufleisten
- 5. So fügen Sie meiner Anwendung Suchfunktionen hinzu
- 6. Laden Sie iTunes-Albumcover ohne iTunes
- 7. So finden Sie zuverlässig ähnliche Zeichenfolgen wie
- 8. Erhalten Sie App-Keywords mit der iTunes Search API
- 9. So implementieren Sie Suchfunktionen in ASP.NET MVC-Anwendungen
- 10. Wie Sie ähnliche Interessen in MySQL zählen
- 11. Wie machen Sie eine ähnliche Abfrage?
- 12. iOS Spotlight Suche Ranking
- 13. Wie Firmennamen in iTunes Connect
- 14. So verwenden Sie Spotlight in opengl
- 15. iPhone: Wie erkennt man, ob iTunes spielt?
- 16. Wie erhalten Sie php_phar.dll?
- 17. Wie finde ich Itunes Events?
- 18. Wie lange sind Spotlight-Elemente (CSSearchableItem) noch vorhanden?
- 19. Generalisierte Methode, um ähnliche Objektattribute zu erhalten
- 20. Wie C64-ähnliche Sounds reproduzieren?
- 21. So gruppieren Sie ähnliche oder sehr ähnliche Elemente in der Liste mit Regex
- 22. Den iTunes Connect-Nutzernamen eines Nutzers erhalten?
- 23. Wie testet man ExtJS oder ähnliche JavaScript-basierte Schnittstellen?
- 24. Bietet Boost oder STL eine ähnliche Funktionalität wie QString?
- 25. Wie erkennen Sie ähnliche Bilder, obwohl sie abgeschnitten wurden?
- 26. UITextView highlightedTextColor oder ähnliche Option?
- 27. Wie erhalten Sie Zeilenumbrüche in Textarea?
- 28. Wie erhalten Sie Kreditkartenzahlungen?
- 29. Wie erhalten Sie eine Eclipse-ähnliche Klassengliederung in VS 2008/C#?
- 30. klicken Sie auf einen Kontextmenüeintrag mit sendmessage (oder ähnliche Funktion)
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. –