我有一个NSTableView包含几个填充数据的列。如何设置一个可以根据特定列的内容过滤行的搜索栏?我正在寻找Finder中的Spotlight或iTunes中的搜索栏中可以通过元数据过滤歌曲的类型。如何获得类似Spotlight或iTunes的搜索功能?
1
A
回答
2
您的数据源可以由NSArrayController管理吗?
有2 standard方法。第一种(Tiger之前的)技术是继承NSArrayController,覆盖arrangeObjects。第二个(后Tiger)是将NSSearchField的谓词绑定到NSArrayController的filterPredicate。在任何一种情况下,将视图属性绑定到控制器的arrangedObject
键(例如,将“名称”NSTableColumn绑定到控制器的arrangedObjects.name
键并将NSTableView的内容绑定到arrangedObjects
)。您可能需要阅读writing predicates。
3
“Spotlight”功能实际上是通过SearchKit API提供给您的,尽管对于您所描述的NSPredicate的简单情况来说,这可能是更好的选择。如果有人感兴趣,我为CocoaHeads编写了一个SearchKit演示文稿,你可以take a look at here。
请记住,您不需要使用绑定来使用NSPredicate,如果您使用数据源方法来填充表视图,它也可以在普通的NSArray对象上工作。 – 2009-05-03 14:14:32