我正在寻找一种方法来过滤NSCollectionView
中显示的项目。我的NSCollectionViewDataSource
使用10.11及更高版本的机制进行管理(即使用NSCollectionViewDelegate
和max
)。我似乎无法找到有关如何完成此操作的任何文档。
是否可以为可见项目实现过滤器,如果有,是否有可用的文档向我展示如何完成?
答案 0 :(得分:1)
可能有更好的方法,但在此之前,我发现不需要修改数据源(在概念上看起来稍微清晰一些,因为数据在过滤期间不会发生变化)的解决方法,只是呈现了哪些项目。
指定NSCollectionViewDelegateFlowLayout
作为NSCollectionView
代表。然后实现方法collectionView(NSCollectionView, layout: NSCollectionViewLayout, sizeForItemAt: IndexPath)
(docs)。这允许您在布局集合视图期间指定每个项目的大小。我只是为与当前过滤字符串不匹配的项返回了0宽度和高度CGSize
。否则返回给定布局的ItemSize
。在搜索字段的每个操作(例如每次击键)上,我都在集合视图上调用ReloadData()
,这会导致重新布局。
这个问题的一个问题是你必须设置一个最小的项目间和行间距为0,否则0大小的项目仍然会得到项目间空格,这会产生不均匀间隔的可见项目。
我仍然希望知道更好的方式,所以如果未来的读者有一个,我会改变接受的答案。